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

14 浏览
0 Comments

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

看起来在网上有一些类似的问题,但对我没有起作用的解决方案。\n我有一个指令,比如说包含了这样一个函数(在指令内部):\n

link: function(scope, element, attrs) {
     scope.myfunction = function (){
          console.log('函数运行');
     };
}

\n我想从控制器中调用它(运行它),像这样一个简单的方式:\n

$scope.myFunction();

\n这样我就可以在页面的指令代码之外的部分调用它,比如这样:\n


\n这可能吗?

0
0 Comments

问题原因:在外部控制器中调用指令的函数。

解决方法:通过广播作用域来解决。

在控制器中:

$scope.startFunction = function(){
    $scope.$broadcast('startfunction');
};

在指令中:

scope.$on('startfunction', function () {
     console.log('function run');
});

如果视图已经加载,则广播不会被第二次调用。有什么建议吗?

0