Rog*_*son 20 javascript angularjs angularjs-directive
结合ng-changed和ng-blur的最简单方法是什么?
我发现这篇文章:如何让ng-model不立即更新?
然而,这不再适用于angluar 1.2+有没有办法实现相同的行为?
我想我必须自己存储一个旧值的副本,并将新值与模糊值进行比较,如果我尝试做同样的事情,或者有更简单的方法吗?
Nie*_*eek 46
使用ng-model options.像这样,ng-change只会在输入模糊时触发.
<input type="text"
ng-model="a.b"
ng-model-options="{updateOn: 'blur'}"
ng-change="onchange()"/>
Run Code Online (Sandbox Code Playgroud)
Rog*_*son 14
这就是我想要的.它将值存储在焦点上,并将其与模糊的新值进行比较,如果更改,则会触发属性中的表达式.
app.directive('changeOnBlur', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attrs, ngModelCtrl) {
if (attrs.type === 'radio' || attrs.type === 'checkbox')
return;
var expressionToCall = attrs.changeOnBlur;
var oldValue = null;
elm.bind('focus',function() {
scope.$apply(function() {
oldValue = elm.val();
console.log(oldValue);
});
})
elm.bind('blur', function() {
scope.$apply(function() {
var newValue = elm.val();
console.log(newValue);
if (newValue !== oldValue){
scope.$eval(expressionToCall);
}
//alert('changed ' + oldValue);
});
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
用法:
<input ng-model="foo" change-on-blur="someFunc()" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18388 次 |
| 最近记录: |