Ich möchte in der Lage sein, eine Direktive zu benachrichtigen, wenn ein Ereignis passiert, was die Direktive ändert. Ich weiß, dass Richtlinien nur einmal laufen, also frage ich mich, wie ich das machen würde. Ich bin mir auch nicht sicher, ob ich $ emit oder $ broadcast verwenden soll, ist eine Direktive ein Kind des Controllers?
Zum Beispiel in meinem Controller ich habe:
$rootScope.$emit('PHOTO_UPLOADED', photo);
Und in meiner Richtlinie:
.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;
});
}
};
}])
Ich habe versucht, dies zu tun, aber es ist nichts passiert, wurde die Vorschau nicht aktualisiert, da die Direktive lief schon.