我有一个包含数组的父对象,对于每个值,我呈现一个通过隔离范围传递值的指令。对于这个简单的演示,我只需将对象添加到控制器:
$scope.schedule = {
__type: "Fixed",
ids: [101, 102, 103]
}
})
指令:
app.directive('picker', function() {
return {
scope:{
import: '='
},
template:'<input ng-model="import" >'
}
});
html:
<div ng-repeat="i in schedule.ids">
<picker import="i"></picker> Bind: {{i}}
</div>
我的真实世界问题是我有一个需要重复使用的datepicker指令,因此对于每个呈现的日期选择器,我希望底层/原始数组在值发生变化时保持同步。我错了吗?
正如你在小提琴中看到的那样,我的渲染指令与它们的隔离范围值保持同步,但是它们形成的底层数组没有,在下面插入:
https://plnkr.co/edit/Nt9QwiBmlaW3PKPo8XRN?p=info
由于
答案 0 :(得分:2)
由于数组元素是基元,因此需要引用实际数组
<div ng-repeat="i in schedule.ids track by $index">
<picker import="schedule.ids[$index]"></picker> Bind: {{i}}
</div>
的 DEMO 强>
答案 1 :(得分:1)
使用引用而不是值,因为angular将尝试浅层复制该对象
<div ng-repeat="(index, value) in schedule.ids track by $index">
<picker import="schedule.ids[index]"></picker> Bind: {{value}}
</div>
import="i"
是 schedule.ids 的浅层副本,import="schedule.ids[index]"
是 schedule.ids 的参考,