【发布时间】:2014-09-16 20:42:35
【问题描述】:
我希望能够在事件发生时通知指令以更改指令显示的内容。我知道指令只运行一次,所以我想知道我将如何去做。我也不确定我应该使用 $emit 还是 $broadcast,指令是控制器的子指令吗?
例如,在我的控制器中,我有:
$rootScope.$emit('PHOTO_UPLOADED', photo);
在我的指令中:
.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;
});
}
};
}])
我试图这样做,但什么也没发生,缩略图没有更新,因为指令已经运行。
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope