javascript – $emit或$將事件從控制器廣播到指令AngularJS
我希望能夠在事件發生時更改指令顯示時通知指令.我知道指令只執行一次,所以我想知道我該怎麼做.我也不確定是否應該使用$emit或$broadcast,是指令控制器的一個小孩嗎?
例如,在我的控制器我有:
$rootScope.$emit(‘PHOTO_UPLOADED’,照片);
在我的指示中:
.directive('photo', [function () { return { restrict: 'EA', scope: {user: '='}, replace: true, template: '<div id="{{user.id}}"></div>', link: function ($scope, element, attrs) { var thumbnail = ($scope.user && $scope.user.image) ? $scope.user.image : '/default.png'; element.css('background-image', 'url(' + thumbnail + ')'); $rootScope.$on('PHOTO_UPLOADED', function(event, data) { thumbnail = data; }); } }; }])
我試圖這樣做,但沒有發生任何事情,縮圖沒有更新,因為指令已經執行.
ofollow,noindex" target="_blank">http://jsfiddle.net/smaye81/q2hbnL5b/6/
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/25878077/emit-or-broadcast-an-event-from-a-controller-to-a-directive-angularjs