是否有可能“观察”属性的变化

是否有可能“监视”UI指令的变化? 像这样的东西:

.directive('vValidation', function() { return function(scope, element, attrs) { element.$watch(function() { if (this.hasClass('someClass')) console.log('someClass added'); }); } }) 

是。 如果在属性处使用插值,则可以使用attr.$observe

但是,如果这不是一个插值属性,并且你期望它从应用程序中的其他地方改变(非常不推荐,阅读Common Pitfalls ),你可以$watch函数返回:

 scope.$watch(function() { return element.attr('class'); }, function(newValue){ // do stuff with newValue }); 

无论如何,它可能是你最好的办法是改变改变元素类的代码。 哪一刻会发生变化?

 attrs.$observe('class', function(val){}); 

您也可以在控制器中观察variables。

该代码在其他模块显示反馈消息后自动隐藏通知栏。

HTML:

 <notification-bar data-showbar='vm.notification.show'> <p> {{ vm.notification.message }} </p> </notification-bar> 

指示:

 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); } } }; 

指导模板:

 <div class="notification-bar" data-ng-show="showbar"><div> <div class="menucloud-notification-content"></div>