ngIf
会在父作用域内创建另一个作用域。根据Angular文档,我从这个链接中了解到,理论上它会将内部作用域传递给父作用域。但实际上并不是这样的。我需要将这个作用域的特性传递给父作用域。我该怎么做?
感谢任何帮助。
ngIf
会在父作用域内创建另一个作用域。根据Angular文档,我从这个链接中了解到,理论上它会将内部作用域传递给父作用域。但实际上并不是这样的。我需要将这个作用域的特性传递给父作用域。我该怎么做?
感谢任何帮助。
如果我理解您的问题(我尝试了),有许多方法来解决这个问题。提供了一些替代方案。
方法 1:
您可以在ng-if
内部使用$parent并完成其余操作。
方法 2:
您只需要将结构修改为对象表示法,即{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>
这里有一个示例可以使用链接。
方法3:
您可以使用ng-hide
而不是使用ng-if
,它解决了所有的神秘问题(在我看来,如果您与UI重构无关,那么这将是您的好伙伴)。
附言:总之,文档清楚地说明,如果使用ng-if
,它会创建一个子作用域。因此,子级可以访问父级数据,但反过来则不行。这就是为什么在父级结构中修改不会反映在父级水平上的原因。使用上述任何一种替代方案即可。
$parent
会获取到父级的数据。请再次注意,我强调的是在子层级内部访问的情况,因为你知道在子作用域内,它只能访问子级别的数据。所以我们使用 $parent
来获取父级数据。#ng-if 会创建一个单独的实例(如果使用)。 - super cool