ng-show不使用ng-include

时间:2016-01-27 07:38:26

标签: angularjs partials ng-show angularjs-ng-include

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;

问题是当代码被放置在包含文件中时,它会在点击“关闭”后中断。

3 个答案:

答案 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>

http://plnkr.co/edit/9wmKTR8HPw54K95XqapA?p=preview

答案 1 :(得分:1)

我认为问题是因为ng-include创建了新范围,而asdf被此范围的本地版本所遮蔽。

这是众所周知的问题。您可以将变量放在内部结构中(例如,将asdf更改为input.asdf并将输入初始化为{})或(更高级)将控制器用作构造。

看这里:https://stackoverflow.com/a/14146317/115198

答案 2 :(得分:1)

这是因为在包含文件中创建了ng-include新子范围,外部范围成为父范围。

所以你应该在_include.html

中尝试以下内容
<div class="" ng-show="$parent.asdf">
    <div ng-click="$parent.asdf = !$parent.asdf"><h2>CLOSE</h2></div>   
</div>

希望它有所帮助!