是否有可能“观察”属性的变化
是否有可能“监视”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>