0

У меня есть директива, у которой есть div, чья видимость задается ее родителем. Ожидание «показать» должно быть правдой, но div по-прежнему не отображается на начальном этапе загрузки страницы.Угловая директива не поднимает значения, заданные родителем

Directive: 
<div ng-show="{{ show }}"> 
     ... 
</div> 

angular.module('myModule').directive('myDiv', [ 
    function() { 
    return { 
     scope: { 
      show: '=' 
     }, 
     transclude: true, 
     restrict: 'EA', 
     controller: myController, 
     controllerAs: 'ctrlr', 
     templateUrl: 'myDiv.tpl.html' 
    }; 
}]); 

Parent: 
<div myDiv show="ctrlr.shoudlShow()" ng-repeat="item in ctrlr.items"> 
</div> 

Там может быть вероятность того, что shoudlShow() возвращает ложь при загрузке страницы, а потом оказывается правдой. Может быть, директива myDiv не собирает последние значения shouldShow()? Нужно ли мне следить за изменениями или чем-то еще?

ответ

1

ng-show ожидает выражение не интерполяции, и вы оставили вне controllerAs псевдоним

Изменения в

<div ng-show="ctrlr.show"> 

Лучше было бы использовать фильтр ng-repeat вместо или ng-if. Не имеет смысла добавлять все эти элементы (и связанные с ними часы), если они не нужны

0

Я не понимаю точно, чего вы пытаетесь достичь, но когда вы создаете угловую директиву, атрибут HTML для заявленной директивы называется myDiv должна быть моих-ДИВЫМ и не myDiv (см documentation)

Parent: 
<div my-div show="ctrlr.shoudlShow()" ng-repeat="item in ctrlr.items"> 
</div> 
0

у вас есть функция называется shoudlShow() и указанная функция возвращает логическое значение, что будет передаваться в директиву. В этом случае вам нужно привязать переменную, которая возвращается в директиву, привязка функции не будет работать. Вы можете использовать что-то вроде

vm.isShown=vm.souldShow(); 

, а затем в своей директиве

<div myDiv show="ctrlr.isShown" ng-repeat="item in ctrlr.items"> 
</div> 
Смежные вопросы