Chcę być w stanie powiadomić dyrektywę, gdy zdarzenie zmieni jej wygląd. Wiem, że dyrektywy działają tylko raz, więc zastanawiam się, jak to zrobię. Nie jestem również pewien, czy powinienem używać emisji $ emit lub $, czy dyrektywa jest dzieckiem kontrolera?
Na przykład w moim kontroler mam:
$rootScope.$emit('PHOTO_UPLOADED', photo);
I w moim dyrektywy:
.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;
});
}
};
}])
Próbowałem to zrobić, ale nic się nie stało, miniaturka nie został zaktualizowany, ponieważ dyrektywa już działała.