我有一个带有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()可能会在页面加载时返回false,之后它会变为true。可能是指令myDiv没有获取shouldShow()的最新值吗?我是否需要注意变化或其他什么?
答案 0 :(得分:1)
ng-show
期望表达式不是插值而你遗漏了controllerAs
别名
更改为
<div ng-show="ctrlr.show">
更好的方法是使用ng-repeat
上的过滤器或ng-if
。如果不需要,那么添加所有这些元素(以及相关的手表)是没有意义的
答案 1 :(得分:0)
我并不完全明白您要尝试实现的目标,但在创建Angular指令时,名为 myDiv 的声明指令的HTML属性应为 my-div 而不是 myDiv (参见documentation)
['elem2', 'elem3', 'elem4', 'elem5']
答案 2 :(得分:0)
你有一个名为 shoudlShow()的函数,并且所述函数将返回一个将传递给指令的布尔值。在这种情况下,您需要绑定返回到指令的变量,绑定该函数将不起作用。你可以使用像
这样的东西vm.isShown=vm.souldShow();
然后在你的指令
中<div myDiv show="ctrlr.isShown" ng-repeat="item in ctrlr.items">
</div>