ho usato la soluzione @ di pensare troppo, ma ha incontrato il problema menzionato da @dmitankin. Tuttavia, non volevo collegare un gestore all'evento di messa a fuoco. Così, invece, ho cercato di scavalcare la proprietà originaria di $ e costringerla a restituire false sempre. Ho finito per utilizzare Object.defineProperty che non è supportato in IE8 e sotto. Ci sono workarounds per fare questo in quei browser legacy, ma non ho bisogno di loro, in modo che non fanno parte della mia soluzione qui di seguito:
(function() {
angular
.module("myapp")
.directive("noDirtyCheck", noDirtyCheck);
function noDirtyCheck() {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
var alwaysFalse = {
get: function() { return false; },
set: function() { }
};
Object.defineProperty(ctrl, '$pristine', alwaysFalse);
Object.defineProperty(ctrl, '$dirty', alwaysFalse);
}
};
}
})();
Sono anche imperativi $ sporca in modo che non può essere impostata come sporco
fonte
2014-12-11 19:36:21
Grazie mille! – cheeesus
Quando premo lo spazio nella casella di testo, il modulo non diventa sporco, – Developer