Tôi thực sự thích cách thuộc tính ng-model liên kết trực tiếp với mô hình của tôi và người dùng nhận được phản hồi tức thì về các thay đổi của họ. Đối với trường hợp sử dụng của tôi đó là hoàn hảo. Tuy nhiên, tôi không muốn các giá trị không hợp lệ được đưa vào mô hình nơi chúng có thể ném cờ lê vào các tính toán. Tôi bằng cách nào đó muốn mô hình chỉ được cập nhật nếu giá trị trong điều khiển biểu mẫu hợp lệ. Đối với các giá trị không hợp lệ, sẽ tốt cho giá trị điều khiển thay đổi trong khi giá trị mô hình vẫn cố định.Không ghi lại các giá trị không hợp lệ với ng-model
Nếu tôi thay đổi nguồn gốc của góc (1.2rc) thực hiện NgModelController của $ setViewValue:
this.$setViewValue = function(value) {
...
if (this.$modelValue !== value) {
this.$modelValue = value;
...
}
};
Để này:
this.$setViewValue = function(value) {
...
if (this.$modelValue !== value && this.$valid) {
this.$modelValue = value;
...
}
};
Có vẻ như để làm chính xác những gì tôi muốn, tuy nhiên tôi don' t biết làm thế nào để làm điều này một cách thích hợp. Cách đúng để thay đổi hành vi này là gì? Hay những nỗ lực của tôi có bị thất bại vì một lý do nào đó không?
Cập nhật: Đã thêm ví dụ.
Ví dụ nhìn vào http://jsfiddle.net/FJvgK/1/ HTML:
<div ng-controller="MyCtrl">
{{validNumber}}
<form>
<input
type="number"
ng-model="validNumber"
required
min="10"
max="20"
/>
</form>
</div>
Và JS:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.validNumber = 15;
}
Số cho thấy đúng cho giá trị từ 10 đến 20, nhưng tôi muốn nó để nếu bạn đột nhiên nhập '8' vào hộp hoặc xóa chữ số thứ hai để lại '1' số hợp lệ cuối cùng vẫn hiển thị ở trên. Tức là, mô hình luôn có giá trị hợp lệ, ngay cả khi điều khiển không có.
vâng xin lỗi tôi đã thêm ví dụ. Tôi không muốn trường để trống, tôi muốn nó giữ giá trị hợp lệ. –
Bạn đã đúng. Nó không thay đổi mô hình, nó cũng không hiển thị các giá trị mô hình không hợp lệ ở nơi khác trong giao diện người dùng mà tôi không mong đợi/muốn. –