-1
請告訴我如何描述指令「myValidation」輸入場角度。如何在輸入驗證期間更改模型值?
<input my-validation ng-model="myValue">
,使其表現如下:
- 如果用戶輸入
'A'
指令必須改變myValue
到'B'
(展示它在輸入字段中) - 否則保持原始值
請告訴我如何描述指令「myValidation」輸入場角度。如何在輸入驗證期間更改模型值?
<input my-validation ng-model="myValue">
,使其表現如下:
'A'
指令必須改變myValue
到'B'
(展示它在輸入字段中)您可以在myValue
創建一個表,當值改變執行您的驗證......
angular.module('App', [])
.directive('myValidation', function() {
return {
restrict: 'A',
require: "ngModel",
link: function (scope, element, attrs, ngModel) {
scope.$watch(function() {
return ngModel.$modelValue;
}, function (newVal, oldVal) {
if (newVal === 'A') {
scope.myValue = 'B';
}
});
}
};
});
謝謝你,安東尼。如果可以的話,請回答如何防止$ watch連鎖反應。我明白爲什麼會發生,但無法找出改變其行爲的方式。讓我們在你的例子中擴展$ watch第二個參數的主體,以瞭解我的意思。如果我們要求 如果(的newval === 'A'){ scope.myValue = 'B' } 否則如果(的newval === 'B'){ scope.myValue = 'C' } 然後輸入 – diziaq
...然後在輸入'A'上,我們在輸入字段中獲得'C',但是我希望它是'B'。我明白爲什麼會發生,但無法找出改變其行爲的方式。 – diziaq
有趣的問題...你有權訪問舊值,因此理論上你可以檢查它,如果newValue ==='B'&& oldValue ==='A'',則不會轉換到'C'。但是,這並不完全令人驚歎,如果它變得更復雜,它可能不起作用。 –