我有一个控制个性化多选的指令。有时从主控制器我想清除所有多选。我有多选值填充" filter
"双向变量,我可以从那里删除内容,但在这样做时,我还必须更改一些样式和其他内容。换句话说:我必须从属于控制器的按钮调用属于该指令的方法。这个数据结构是否可行?:
(顺便说一句,我发现了其他问题和例子,但他们的指示并没有自己的范围。)
function MultiselectDirective($http, $sce) {
return {
restrict: 'E',
replace: true,
templateUrl: 'temp.html',
scope: {
filter: "=",
name: "@",
url: "@"
},
link: function(scope, element, attrs){
//do stuff
scope.function_i_need_to_call = function(){
//updates directtive template styles
}
}
}
}
答案 0 :(得分:1)
最佳解决方案和角度方式 - 使用event
。
jsfiddle上的实例。
angular.module('ExampleApp', [])
.controller('ExampleOneController', function($scope) {
$scope.raise = function(val){
$scope.$broadcast('raise.event',val);
};
})
.controller('ExampleTwoController', function($scope) {
$scope.raise = function(val){
$scope.$broadcast('raise.event',val);
};
})
.directive('simple', function() {
return {
restrict: 'A',
scope: {
},
link: function(scope) {
scope.$on('raise.event',function(event,val){
console.log('i`m from '+val);
});
}
}
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="ExampleApp">
<div ng-controller="ExampleOneController">
<h3>
ExampleOneController
</h3>
<form name="ExampleForm" id="ExampleForm">
<button ng-click="raise(1)" simple>
Raise 1
</button>
</form>
</div>
<div ng-controller="ExampleTwoController">
<h3>
ExampleTwoController
</h3>
<form name="ExampleForm" id="ExampleForm">
<button ng-click="raise(2)" simple>
Raise 2
</button>
</form>
</div>
</body>
&#13;
答案 1 :(得分:-1)
我认为从控制器到指令的更好解决方案是这样的:
X,Y