gpt4 book ai didi

javascript - Angularjs 别名作用域

转载 作者:行者123 更新时间:2023-11-30 16:16:43 26 4
gpt4 key购买 nike

我还在学习 Angular,如果问题是废话,请原谅我

我有一个具有此层次结构的对象:

{
a : [...],
b : [{
a: [...]
}, {
...
}]
}

也就是说,对于主对象的直接子对象和间接子对象,我有相同的对象模型。即名为“a”的两个属性具有相同的字段

我构建了一个用 ng-view 管理的 View ,并认为可以在主 Controller 和循环遍历 b 元素的 ng-repeat 中调用它。但是,我不知道如何更改传递给管理“a”的 View 的范围:

主视图是这样制作的:

<div ng-controller="MainController as ctrl">
<div ng-include="'subView'"/>
<div ng-repeat="bElement in ctrl.b">
<div ng-include="'subView'"/>
</div>
</div>

在 subview 中,我可以访问像 bElement.a 这样的元素,因为我获得了与外部 Controller 相同的范围。但是如何访问根元素的属性 a 呢?

我需要的是像 ng-repeat 这样的东西,它允许为一个属性创建一个别名,这样它就可以被覆盖,但没有“重复”。

我也尝试过以这种方式使用 ng-init:

<div ng-controller="MainController as ctrl">
<div ng-include="'subView'" ng-init="list = ctrl.a"/>
<div ng-repeat="bElement in ctrl.b">
<div ng-include="'subView'" ng-init="list = bElement.a"/>
</div>
</div>

但只有第二次调用有效

最佳答案

上面的代码应该可以工作,但我在这里看到的唯一遗漏的是,您没有正确关闭 ng-include div 下面。所以它停止浏览器不会考虑确切的下一个 div & innner ng-repeat div 将不会得到渲染。

<div ng-include="'subView'" ng-init="list = ctrl.a"/>

因此应该正确关闭div,以便浏览器获取下一个元素。

<div ng-include="'subView'" ng-init="list = ctrl.a"></div>

Sample Plunkr以上问题。


Solved working Plunkr list 子变量更新。

虽然它会起作用,但我在当前的实现中看到了一些架构威胁,因为当前的实现看起来非常紧密耦合。需求的任何微小变化都可能导致重新工作。因为 ng-init 将来可能会伤害你。如果假设您的集合将在指定的时间间隔内更新(在那个 ng-init 表达式将不会在第二次呈现模板时计算)

关于javascript - Angularjs 别名作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com