【发布时间】:2015-11-16 13:10:53
【问题描述】:
ngIf 在父作用域内创建另一个作用域。根据角度文档,正如我从link 了解到的那样,理论上是在范围内传递到父范围。但在实践中,事实并非如此。我需要将此范围功能传递给父范围。我该怎么做。
感谢您的帮助。
【问题讨论】:
-
请创建一个示例,我也建议使用“Controller As”,并删除范围。它将解决很多这些问题。
ngIf 在父作用域内创建另一个作用域。根据角度文档,正如我从link 了解到的那样,理论上是在范围内传递到父范围。但在实践中,事实并非如此。我需要将此范围功能传递给父范围。我该怎么做。
感谢您的帮助。
【问题讨论】:
如果我理解你的问题(我试过),有很多方法可以解决这个问题。提供替代方案。
方法一:
您可以在 ng-if 中使用 $parent 并完成剩下的工作。
方法二:
您只需将结构修改为对象表示法,即{obj.yourval}。
<body ng-app="ngAnimate" ng-init="cool.mess='Im removed';checked=true">
<br/> : {{cool.mess}}
<br/> Click me: <input type="checkbox" ng-model="checked" /><br/>
Show when checked:
<span ng-if="checked" class="animate-if">
<input type="text" ng-model="cool.mess"/>
</span>
</body>
抽奖here。
方法 3:
您可以使用ng-hide 而不是使用解决所有谜团的ng-if(恕我直言,如果您与 UI 重组无关,那么您就是朋友)。
PS:只是四舍五入,文档清楚地说明如果使用 ng-if 它会创建一个子范围。所以孩子可以访问父母的数据,而不是相反。这就是为什么孩子结构的修改没有反映在父母层面的原因。使用上述任何一种替代方法。
【讨论】:
$parent 在从子级别访问时会为您获取父级别数据。再次看到我在强调insidechild,因为您知道在子范围内它可以访问onlychild 的数据。所以我们在孩子内部使用$parent 来获取父母数据。 #ng-if 创建一个单独的实例(如果使用)。