Ng-change在指令中表现异常。似乎摘要周期有所延迟,导致更改后立即在控制器中错误(先前)的ngModel值。
ngModel : '='
https://codepen.io/anon/pen/moEgdG
怎么回事以及如何解决?
答案 0 :(得分:1)
对于组件上的ng-model
指令,我建议对输入使用单向(<
),对输出使用$setViewValue:
app.directive('newTag', function(){
return {
template: `
<input ng-model="test" ng-change="change(test)"> <br/>
{{test}}
`,
restrict: 'E',
require: "ngModel",
scope: {
ngModel : '<',
},
link: function (scope, elem, attrs, ngModel) {
scope.change = function(val) {
ngModel.$setViewValue(val);
};
},
};
})
用法:
<new-tag ng-model="tagValue" ng-change("newTagUpdate(tagValue)")>
</new-tag>
有关更多信息,请参见