如何在指令内声明的AngularJS控制器中调用函数?

如何在指令内声明的AngularJS控制器中调用函数?,angularjs,Angularjs,我是AngularJS新手,我正在尝试调用doSomething()函数,该函数在指令中声明。请帮帮我 这是我的指示: app.directive('myDirective', function() { return { scope.doSomething = function(parm1, param2) { console.log('print This'); } }); 这是我的控制器: function MyCtrl($scope) {

我是AngularJS新手,我正在尝试调用doSomething()函数,该函数在指令中声明。请帮帮我

这是我的指示:

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);
}