我能够通过&绑定一次并能够成功调用回调函数。
但是,当我尝试将回调函数传递给另一个隔离的scope指令时,我无法再调用回调函数。
我怎样才能通过&绑定范围两次?
.directive('demoOne', function() {
return {
template: '<div><div>demo one</div>' +
'<button ng-click="test()">demo-one</button>' +
'<demo-two demotwocb="demoonecb"></demo-two>' +
'</div>',
scope: {
demoonecb: '&',
},
controller: ('demoOneCtrl', ['$scope', function($scope) {
$scope.test = function() {
$scope.demoonecb({
text: 'demonetext'
});
};
}])
}
})
.directive('demoTwo', function() {
return {
template: '<div><button ng-click="test()">demo-two</button></div>',
scope: {
demotwocb: '&',
},
controller: ('demoTwoCtrl', ['$scope', function($scope) {
$scope.test = function() {
$scope.demotwocb({
text: 'demtwotext'
});
};
}])
}
});
模板:
<demo-one demoonecb="vm.demo(text)"></demo-one>
我试图通过
将demoonecb传递给指令<demo-two demotwocb="demoonecb(text)"></demo-two>
<demo-two demotwocb="demoonecb()"></demo-two>
<demo-two demotwocb="demoonecb"></demo-two>
并且都失败了,demo-two的控制器无法调用回调。
编辑:
我现在使用'='双向绑定来传递函数并且它可以工作,但我仍然想知道如何使用'&amp;'来实现这一点结合