http://plnkr.co/edit/0CAgXsX847n9LfIG4Fzj?p=preview
我有两个文件: -index.html(这使用ng-include - DOESNT WORK) -index_embedded.html(使用相同的代码但不使用include - WORKS)
嗨,我的问题是当我点击“点击我”,然后点击“关闭”,然后尝试再次点击“点击我”,它不再有效。
当我在不使用ng-include的情况下使用相同的代码时,我可以点击“CLICK ME”,“CLOSE”,再点击“CLICK ME”。
为什么仅当代码在包含文件中时才会起作用?
display: block;
问题是当代码被放置在包含文件中时,它会在点击“关闭”后中断。
答案 0 :(得分:4)
首次从父级继承 asdf 的值,直到您点击关闭后没有点击关闭它正在创建 asdf 使用点击我不再影响本地范围,因此您可以在包含文件中使用$ parent.asdf,它始终引用父文件。
请参阅更新的plunker
<div class="" ng-show="$parent.asdf">
<div ng-click="$parent.asdf = !$parent.asdf"><h2>CLOSE</h2></div>
</div>
答案 1 :(得分:1)
我认为问题是因为ng-include创建了新范围,而asdf被此范围的本地版本所遮蔽。
这是众所周知的问题。您可以将变量放在内部结构中(例如,将asdf更改为input.asdf并将输入初始化为{})或(更高级)将控制器用作构造。
答案 2 :(得分:1)
这是因为在包含文件中创建了ng-include新子范围,外部范围成为父范围。
所以你应该在_include.html
中尝试以下内容<div class="" ng-show="$parent.asdf">
<div ng-click="$parent.asdf = !$parent.asdf"><h2>CLOSE</h2></div>
</div>
希望它有所帮助!