Angularjs指令用函数双向绑定落入无限循环

时间:2015-01-22 18:43:59

标签: javascript angularjs directive

我正在尝试创建一个自定义指令,以便在其中使用<select>组合数据。该指令具有传递的更改函数,并在模板中使用ng-change。它调用的函数位于父级的作用域中,而不是在隔离的指令作用域中。例如:

app.directive('selectDirective', function() {
    return {
        templateUrl: 'templates/myTemplate.html',
        restrict: 'E',
        require: 'ngModel',

        scope: {
            change: '=',
        }
        ...
    }

此指令的调用方式如下:<selectDirective change="myFunction()">

如您所见,我正在使用双向绑定(=)来定义父作用域中的函数。它必须是这种方式,因为我在调用此函数时更新了其他<select>。请注意,在父函数中,我使用指令模型来检索其id。

我的问题是,一旦父母的函数被调用,它就会陷入无限循环,我无法想出办法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

通过使用$timeout服务包装函数解决了该问题。它将函数添加到队列中,并在角度准备就绪后执行,以便模型也同步。