ngModel延迟绑定一个键击

时间:2014-03-05 05:39:10

标签: angularjs angularjs-directive

我正在尝试创建一个指令。以下是该指令的摘要:plunker

ngModel值是一个比显示更晚的关键词:例如如果我有显示值“abc”,那么ngChange函数收到的ngModel是“ab”。

我不明白的是..我在屏幕上打印的值和我传递给ngChange的值都是相同的ngModel,那么它们怎么会有不同的值?

请帮助!!!

修改

我目前正在使用'&'接收ngChange它的一键击中...但是如果我使用'='接收ngChange,则值是同步的,但ngChange被调用的次数太多..

我已更新了plunker以显示问题

3 个答案:

答案 0 :(得分:1)

要从具有隔离范围的指令内部调用控制器或父作用域内的函数,您需要传递一个对象:

<cs-input options="fields.userId" ng-model="abc.userId" 
ng-change="changeFunction(userId)"></cs-input>

JS

return '<input type="text" name="myfield" ' +
        'data-ng-change="ngChange({userId:ngModel})" data-ng-model="ngModel"/>';

答案 1 :(得分:0)

你已经有了ngModel,为什么还需要ngChange?你可以改用$ watch。

http://plnkr.co/edit/85Su4Dewc0kpXttuY9sp?p=preview

  $scope.id = 'x';
  $scope.$watch('id', function(newValue, oldValue) {
    $scope.watchedNewValue = newValue;
    $scope.watchedOldValue = oldValue;
  });

答案 2 :(得分:0)

问题是要传递给ng-change的值应该是$ viewValue而不是$ modalValue,因为$ viewValue并不总是使它成为$ modalValue ...