如何从外部控制器的指令调用函数?

Vas*_*its 2 javascript angularjs

似乎网上存在类似问题的一些问题,但没有解决方案适合我.

我有一个指令,让我们说包括这样的函数(在指令中):

link: function(scope, element, attrs) {

     scope.myfunction = function (){
          console.log('function run');
     };
}
Run Code Online (Sandbox Code Playgroud)

女巫我想让它从一个控制器运行(调用它),像这样简单:

$scope.myFunction();
Run Code Online (Sandbox Code Playgroud)

所以我可以从指令代码之外的页面的一部分调用它,让我们这样说:

<button ng-click="myFunction()">Run</button>
Run Code Online (Sandbox Code Playgroud)

可能吗?

Vas*_*its 6

最后我通过这样的广播范围得到了解决方案.

在控制器中:

$scope.startFunction = function(){
    $scope.$broadcast('startfunction');
};
Run Code Online (Sandbox Code Playgroud)

在指令中:

scope.$on('startfunction', function () {
     console.log('function run');
});
Run Code Online (Sandbox Code Playgroud)