我有一个包含函数绑定的指令:
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()函数时,没有任何反应。我可以将函数传递给这样的绑定函数吗?
答案 0 :(得分:2)
这似乎是不相关的。我在这里复制了plunker中的代码:http://plnkr.co/edit/SuzCGw5WVRClEwEcA17l?p=preview
我看不到整个代码的可能线索是:
service
和otherService
,因此if条件总是假的 - 问题可能在于if块中的调用。doSomething
承诺在做什么,这可能是一个原因。