我是AngularJS的新手,我试图调用在指令内声明的doSomething()函数。请帮助我。
这是我的指令:
app.directive('myDirective', function() {
return {
scope.doSomething = function(parm1, param2) {
console.log('print This');
}
});
这是我的控制者:
function MyCtrl($scope) {
$rootScope.$broadcast('doSomething', [parm1,'parm2']);
}
答案 0 :(得分:0)
您可以通过使用angularjs $broadcast/$on事件来解决此问题。 基本上,您通过广播某些组件将监听的事件进行通信。
为此,请在指令中添加一个事件侦听器,该侦听器将侦听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
};
});
然后使用您要发送的对象从控制器中广播'doSomething'事件
function MyCtrl($scope) {
var obj = { 'parm1': parm1, 'parm2':parm2 };
$scope.$broadcast('doSomething', obj);
}
(请注意,该指令必须在控制器范围内声明,否则请使用rootscope,但要避免这种情况)