горячо делать ng-show без атрибута

#angularjs

#angularjs

Вопрос:

У меня есть куча мест, где мне нужно добавить ng-show к элементу, чтобы скрыть его. Можно ли это сделать из одного места в коде?

Поэтому вместо этого шаблона:

 <tr my-row ng-show="$ctrl.model.toShow()"></tr>
 

Это должно быть:

 <tr my-row ></tr>
 

а затем в директиве:

 function myRow (){
    return {
        restrict: 'A',
        templateUrl: 'my-row.html',
        ..
        link = function(scope,el,attrs){
          scope.$watch('modle.toShow', function(){
                  //something here?
          })
        }

    };
}
 

Ответ №1:

Внесите эти изменения в функцию link, и это добавит атрибут ng-show в вашу директиву my-row .

 var app = angular.module('app', [])
.directive('myRow', function($compile) {
    return {
        restrict: 'A',
        templateUrl: 'my-row.html',

        link: function (scope, element, attrs) {
          var attr;
          element.attr('ng-show', true);
          var fn = $compile(element);
          return function(scope){
          fn(scope);
        };

         }
    };
})
 

Вот плунжер

Комментарии:

1. Добавлен плунжер, пожалуйста, проверьте.