我正在尝试创建一个自定义指令,以便在其中使用<select>
组合数据。该指令具有传递的更改函数,并在模板中使用ng-change
。它调用的函数位于父级的作用域中,而不是在隔离的指令作用域中。例如:
app.directive('selectDirective', function() {
return {
templateUrl: 'templates/myTemplate.html',
restrict: 'E',
require: 'ngModel',
scope: {
change: '=',
}
...
}
此指令的调用方式如下:<selectDirective change="myFunction()">
如您所见,我正在使用双向绑定(=
)来定义父作用域中的函数。它必须是这种方式,因为我在调用此函数时更新了其他<select>
。请注意,在父函数中,我使用指令模型来检索其id。
我的问题是,一旦父母的函数被调用,它就会陷入无限循环,我无法想出办法。有什么想法吗?
答案 0 :(得分:0)
通过使用$timeout
服务包装函数解决了该问题。它将函数添加到队列中,并在角度准备就绪后执行,以便模型也同步。