我試圖創建一個模態模塊,可以從應用程序的任何地方調用,但我遇到了一個問題,可能突出了我的一部分誤解,但我可以'看看它是什麼。可以更新工廠從控制器,但不是從指令
繼承人的我想要達到的jsfiddle:http://jsfiddle.net/dwSX8/2/
當我更新ModalAPI從控制器一切正常,但是當我做同樣的從指令罷了。
所以我的HTML是:
<div ng-app="app">
<div ng-controller="AppCtrl">
<button ng-click="logout()">Via Controller</button>
<button logout>Via Directive</button>
</div>
<modal></modal>
</div>
和我的角JS的東西:
angular.module('Modal', [])
.factory('ModalAPI', function() {
return {
title: 'Before click',
open: function(title){
console.log('new title: ' + title);
this.title = title;
}
}
})
.directive('modal', function(){
return {
restrict: 'E',
scope: {},
replace:true,
controller: function($scope, ModalAPI){
$scope.m = ModalAPI;
$scope.$watch('modal.title', toggle);
function toggle() {
console.log(' ---------- Modal changed!!!!');
};
},
template: '<div>{{m.title}}</div>'
};
})
angular.module('app', ['Modal'])
.controller('AppCtrl', function ($scope, ModalAPI) {
$scope.logout = function(){
console.log('clicked');
ModalAPI.open('After controller click')
}
})
.directive('logout', function(){
return{
restrict: 'E',
link: function($scope, element, ModalAPI) {
element.bind('click', function(){
ModalAPI.open('After directive click')
})
}
}
})
謝謝,結合埃迪克答案我已經得到它的工作。 – steveg