我在 Controller 中有以下功能:
angular.module('app').controller('BodyController', function(){
this.click = function(message){
alert(message);
}
})
我想将此函数传递到指令的独立作用域中,以使用一些特定参数调用它,类似这样:
angular.module('app').directive('custom', function(){
return {
restrict: 'A',
scope: {
text: '@',
click: '&click'
},
link: function(scope, element){
//...
scope.click('Hello, Plunker!');
//...
}
}
})
我以这种方式传递函数:
<h1 custom text="Hello Plunker!" click="ctrl.click"></h1>
这是一个例子:http://plnkr.co/edit/4zkxuHJIB3D339h2Oy60?p=preview
函数未被调用。我错过了什么?
提前致谢
最佳答案
你可以做类似的事情
angular.module('app').directive('custom', function(){
return {
restrict: 'A',
scope: {
text: '@',
click: '=click'
},
link: function(scope, element){
// console.dir(scope.click);
element.bind("click",function(){
scope.click('Hello, Plunker!');
});
element.text('Hello, Plunker!');
}
}
})
在这里,您可以通过点击从父作用域获取点击功能:'=click'
并绑定(bind)该函数以点击该元素。
这里是 plnkr http://plnkr.co/edit/Ekw8I6Kg6tDOnIrnv4za?p=preview
或者您可以像这样将参数传递到您的指令中 http://plnkr.co/edit/mBbZil1jc4El2Jk79ru7?p=preview
关于javascript - 如何将函数处理程序从 Controller 传递到 AngularJs 中的指令隔离范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056840/