今天遇到一个需求,要求在XXX条件下隐藏掉一个用directive生成的DOM。
directive部分如下:
1 | app.directive("incNav", function() { |
看起来很简单啊,ng-show走起
1 | <div ng-show="showDom">我是要被隐藏掉的DOM</div> |
咦,这个DOM怎么就消失了
难不倒我,是我还没在controller里设置ng-show = true
1 | var app = angular.module('myApp.controllers', []); |
咦???!!!怎么还是没有
注释大法好
干掉了所有不相关的内容后终于确定问题出在这个directive上
1 | app.directive("incNav", function() { |
问题解决
究其原因,是因为这个directive有一个独立的scope,所以它认为对应的ng-show应该在template内部
但是同时ng-repeat是不受影响的