第一種方式是單向控制器和指令之間的結合:
JS:
angular.module('App',[])
.directive('multEcs', [function(){
return{
restrict: 'A',
replace: false,
scope: {
addToArray: '&'
},
link: function($scope, elem, attr){
$scope.addToArray();
}
}
}])
.controller('HomeCtrl', ['$scope', function($scope){
$scope.addToArray = function(){
console.log('method called');
}
}])
HTML:
<div ng-app="App">
<div ng-controller="HomeCtrl">
<div mult-ecs add-to-array="addToArray()">multEcs</div>
</div>
</div>
第二種方法是創造孤立在與個人控制器直接的範圍。 Recomended通信指令之間:
JS:
angular.module('App',[])
.directive('multEcs', [function(){
return {
restrict: 'A',
replace: false,
controller: 'HomeCtrl',
scope: {},
link: function($scope, element, attrs, ctrl){
ctrl.addToArray();
}
}
}])
.controller('HomeCtrl', ['$scope', function($scope){
this.addToArray = function(){
console.log('method called');
};
}]);
HTML:
<div ng-app="App">
<div>
<div mult-ecs>multEcs</div>
</div>
</div>
因爲你不使用分離的範圍。這應該工作的是。你試過了嗎?你有什麼問題嗎?如果是,請提供詳細信息 – harishr 2014-12-02 10:48:58
沒有錯誤,但功能未被調用。控制器用於在路線上設置的整個頁面。該指令在頁面內。那有什麼問題嗎? – user3002327 2014-12-02 10:52:46
你可以設置plunker – harishr 2014-12-02 10:55:12