È anche possibile vedere la variabile nel controller.
Questo codice nasconde automaticamente la barra di notifica dopo che un altro modulo visualizza il messaggio di feedback.
HTML:
<notification-bar
data-showbar='vm.notification.show'>
<p> {{ vm.notification.message }} </p>
</notification-bar>
DIRETTIVA:
var directive = {
restrict: 'E',
replace: true,
transclude: true,
scope: {
showbar: '=showbar',
},
templateUrl: '/app/views/partials/notification.html',
controller: function ($scope, $element, $attrs) {
$scope.$watch('showbar', function (newValue, oldValue) {
//console.log('showbar changed:', newValue);
hide_element();
}, true);
function hide_element() {
$timeout(function() {
$scope.showbar = false;
}, 3000);
}
}
};
DIRETTIVA MODELLO:
<div class="notification-bar" data-ng-show="showbar"><div>
<div class="menucloud-notification-content"></div>
fonte
2016-09-15 11:34:53
Ho solo bisogno di una direttiva limitata ad un attributo e quando aggiungo la direttiva a qualsiasi elemento arbitrario, dovrebbe essere in grado di dire quando sono cambiati altri attributi di quell'elemento arbitrario. Nel mio caso è 'classe' – Agzam
modificare il codice che cambia classe sarebbe in qualche modo una soluzione inaccettabile per me, anche se probabilmente la cosa più giusta da fare. Devo ancora intercettare in qualche modo il momento in cui cambia la classe – Agzam
Quindi andare con il '$ watch' che ho postato. Darà ciò di cui hai bisogno. –