【发布时间】:2015-12-30 09:04:30
【问题描述】:
背景
我有一个需要由控制器访问的顶级指令。请考虑这个Plunk。
指令
app.directive('topDirective', ['$compile', function($scope){
return {
scope: {},
restrict: 'E',
template: '<h3>Top Directive</h3><p><button ng-click="CallMe()">Click Me</button></p>',
controller: function($scope) {
var self = {};
$scope.CallMe = function(){
alert('Call Me');
};
},
link: function($scope, $elem, $attrs, $ctrl) {
}
};
}]);
需要访问的控制器
app.controller('subController', [
'$scope',
function($scope){
var self = {};
$scope.CallDirective = function() {
alert('>>> Replace by call to directive function CallMe (somehow) <<<')
};
}]);
问题
我需要做什么来替换这一行:
alert('>>> Replace by call to directive function CallMe (somehow) <<<')
通过实际调用指令中的 CallMe() 函数?
如果不能直接使用,有没有办法共享指令和控制器都可以使用的功能?我的第一个想法是服务,但它需要在真实场景中进行 DOM 操作,所以这不是一个选项。
有什么建议吗?
【问题讨论】:
-
您可以从控制器广播并在指令上收听它
标签: javascript .net angularjs asp.net-mvc