Angularjs 别名范围
Angularjs aliasing scopes
我还在学习Angular如果问题是废话请见谅
我有一个具有此层次结构的对象:
{
a : [...],
b : [{
a: [...]
}, {
...
}]
}
也就是说,对于主对象的直接子对象和间接子对象,我有相同的对象模型。也就是说,名为 "a" 的两个属性具有相同的字段
我构建了一个用 ng-view 管理的视图,并认为可以在主控制器和循环遍历 b 元素的 ng-repeat 中调用它。但是,我不知道如何更改传递给视图管理 "a":
的范围
主视图是这样制作的:
<div ng-controller="MainController as ctrl">
<div ng-include="'subView'"/>
<div ng-repeat="bElement in ctrl.b">
<div ng-include="'subView'"/>
</div>
</div>
在子视图中,我可以访问像 bElement.a 这样的元素,因为我得到的范围与外部控制器相同。但是如何访问根元素的属性a呢?
我需要的是像 ng-repeat 这样的东西,它允许为 属性 创建一个别名,这样它就可以被覆盖,但没有 "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
& 内部 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
表达式将不会在第二次呈现模板时计算)
我还在学习Angular如果问题是废话请见谅
我有一个具有此层次结构的对象:
{
a : [...],
b : [{
a: [...]
}, {
...
}]
}
也就是说,对于主对象的直接子对象和间接子对象,我有相同的对象模型。也就是说,名为 "a" 的两个属性具有相同的字段
我构建了一个用 ng-view 管理的视图,并认为可以在主控制器和循环遍历 b 元素的 ng-repeat 中调用它。但是,我不知道如何更改传递给视图管理 "a":
的范围主视图是这样制作的:
<div ng-controller="MainController as ctrl">
<div ng-include="'subView'"/>
<div ng-repeat="bElement in ctrl.b">
<div ng-include="'subView'"/>
</div>
</div>
在子视图中,我可以访问像 bElement.a 这样的元素,因为我得到的范围与外部控制器相同。但是如何访问根元素的属性a呢?
我需要的是像 ng-repeat 这样的东西,它允许为 属性 创建一个别名,这样它就可以被覆盖,但没有 "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
& 内部 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
表达式将不会在第二次呈现模板时计算)