Angular指令范围参数函数,向它传递一个函数

时间:2015-08-03 14:47:15

标签: angularjs angularjs-directive

我有一个包含函数绑定的指令:

angular
    .module('my.module')
    .directive("myDirective", [
        function () {
            return {
                controller: 'MyDirectiveController',
                templateUrl: 'controls/myDirective/myDirective.html',
                replace: true,
                restrict: 'E',
                scope: {
                    openFunction: '&'
                }
            };
        }]);

在我的源代码html中,我定义了这样的指令:

<my-directive
    open-function="openDrawer(open)"
</my-directive>

然后,在我的指令控制器中,我这样称呼它:

$scope.openFunction({
    open: function() {
        doSomething()
            .then(function () {...})
            .finally(function () {...});
    }
});

这里是父控制器openDrawer函数:

$scope.openDrawer = function (open) {
    $scope.alerts = null;
    $scope.showActions = false;

    if (service.editing) {
        service.closeAndSave();
        openDrawerAfterDelay(open);
    } else if (otherService.editing) {
        otherService.commit();
        openDrawerAfterDelay(open);
    } else {
        open();
    }
};

问题是,当我的指令控制器调用$ scope.openFunction()函数时,没有任何反应。我可以将函数传递给这样的绑定函数吗?

1 个答案:

答案 0 :(得分:2)

这似乎是不相关的。我在这里复制了plunker中的代码:http://plnkr.co/edit/SuzCGw5WVRClEwEcA17l?p=preview

我看不到整个代码的可能线索是:

  • 我嘲笑serviceotherService,因此if条件总是假的 - 问题可能在于if块中的调用。
  • 我不确定doSomething承诺在做什么,这可能是一个原因。