如何在指令内声明的AngularJS控制器中调用函数?
我是AngularJS新手,我正在尝试调用doSomething()函数,该函数在指令中声明。请帮帮我 这是我的指示:如何在指令内声明的AngularJS控制器中调用函数?,angularjs,Angularjs,我是AngularJS新手,我正在尝试调用doSomething()函数,该函数在指令中声明。请帮帮我 这是我的指示: app.directive('myDirective', function() { return { scope.doSomething = function(parm1, param2) { console.log('print This'); } }); 这是我的控制器: function MyCtrl($scope) {
app.directive('myDirective', function() {
return {
scope.doSomething = function(parm1, param2) {
console.log('print This');
}
});
这是我的控制器:
function MyCtrl($scope) {
$rootScope.$broadcast('doSomething', [parm1,'parm2']);
}
您可以通过使用angularjs事件来解决这个问题。 基本上,您通过广播一些组件将收听的事件进行通信 为此,首先在指令中添加一个事件侦听器,它将侦听id为“doSomething”的事件
app.directive('myDirective', function () {
var controller = ['$scope', function ($scope) {
$scope.$on('doSomething', function(e){
doSomething(e.parm1, e.parm2)
});
};
$scope.doSomething = function(parm1, param2) {
console.log('print This');
}
}],
template = '<h4>I will listen on your event</h4>
return {
controller: controller,
template: template
};
});
(请注意,该指令必须在控制器作用域中声明,否则请使用rootscope,但请尽量避免)
function MyCtrl($scope) {
var obj = { 'parm1': parm1, 'parm2':parm2 };
$scope.$broadcast('doSomething', obj);
}