AngularJs指令更改ngModel的延迟和模型的值不匹配

时间:2019-03-04 13:42:11

标签: angularjs angularjs-directive angularjs-ng-model angularjs-ng-change

Ng-change在指令中表现异常。似乎摘要周期有所延迟,导致更改后立即在控制器中错误(先前)的ngModel值。

ngModel : '='

https://codepen.io/anon/pen/moEgdG

怎么回事以及如何解决?

1 个答案:

答案 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>

有关更多信息,请参见