Tôi đang sử dụng biểu mẫu để thêm các phần tử vào danh sách được hiển thị ở bên cạnh biểu mẫu. Markup là:Hình thức trống AngularJs và loại bỏ trạng thái không hợp lệ khỏi các đầu vào
<form name="thingForm">
<input required type="text" ng-model="thing.name"/>
<input required type="text" ng-model="thing.value"/>
<input type="submit" ng-click="addThing(thing)"/>
</form>
<ul>
<li ng-repeat="thing in things">{{thing.name}} with value of {{thing.value}}</li>
</ul>
Và trong một bộ điều khiển tôi có:
$scope.things = [];
$scope.addThing = function(thing) {
$scope.things.push(thing);
$scope.thing = {};
};
Làm việc jsfiddle: http://jsfiddle.net/cXU2H/1/
Bây giờ như bạn có thể nhìn thấy, tôi có thể làm rỗng các hình thức bằng cách làm sạch các mô hình, tuy nhiên vì các đầu vào có thẻ bắt buộc nên trình duyệt vẫn hiển thị thông báo lỗi (ít nhất là Chrome).
tôi nhìn vào câu hỏi tương tự và:
- Tôi cũng đã xem xét câu trả lời này: https://stackoverflow.com/a/16296941/545925 tuy nhiên jsfiddle cư xử giống hệt như trong ví dụ của tôi: sau khi đầu vào là xóa nó vẫn có một
ng-invalid-required
lớp còn lại (và nó cũng gây ra một thông báo lỗi HTML5) vì tôi không phải trên cành 1.1.x$setPristine()
không có sẵn cho tôi$setPristine()
cư xử theo cùng một cách
Tôi có thể viết một hàm lặp qua các phần tử của biểu mẫu và loại bỏ mọi lớp ng-invalid-required
và ng-invalid
, nhưng đó không phải là cách tôi muốn giải quyết vấn đề này. Đó là những gì tôi sẽ làm với jQuery.
'$ setPristine()' là phương pháp đúng ở đây. Nếu bạn không muốn chuyển sang phiên bản 1.1.x, hãy cập nhật phiên bản của bạn bằng cam kết này: https://github.com/angular/angular.js/commit/733a97adf87bf8f7ec6be22b37c4676cf7b5fc2b –
Chi nhánh 1.1.x có phá vỡ bất kỳ thứ gì trong Phiên bản 1.0.x? – adamors
Có một số thay đổi đáng kể trong 1.1.x và có những thay đổi đột phá. Tham khảo các thay đổi: https://github.com/angular/angular.js/blob/master/CHANGELOG.md –