今天遇到一个需求,要求在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是不受影响的,这是因为directive需要提前确定它需要注入的内容,ng-repeat是在directive范围外发生的,在这之前,template已经注入了