我正在尝试创建一个指令。以下是该指令的摘要:plunker
ngModel值是一个比显示更晚的关键词:例如如果我有显示值“abc”,那么ngChange函数收到的ngModel是“ab”。
我不明白的是..我在屏幕上打印的值和我传递给ngChange的值都是相同的ngModel,那么它们怎么会有不同的值?
请帮助!!!
修改
我目前正在使用'&'接收ngChange它的一键击中...但是如果我使用'='接收ngChange,则值是同步的,但ngChange被调用的次数太多..
我已更新了plunker以显示问题
答案 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 ...