根据几个消息来源,不建议使用$ parent来更新ng-repeat中的范围(因为它有自己的范围)。我执行以下操作来更新ng-repeat中的数据模型:
<div ng-repeat="datarow in datasource">
<select ng-model="datasource[$index].property" ng-options="option.first_name for option in datarow.options"></select>
</div>
我使用datasource[$index].property
来更新数据源数组。通过这种方式,我可以看到用户何时在所有下拉列表中做出选择,并且我可以启用按钮来提交表单。
有更好的方法吗?我宁愿不使用$ parent。
答案 0 :(得分:0)
只是为了解决这个问题......感谢@eternalmatt的建议。
我决定坚持使用数据驱动模型,因此我可以避免创建一个功能,其唯一目的是更新更高范围的数据。
相反,引用更高作用域中的属性也同样有效,因为较低的作用域从$ parent继承而未显式使用$ parent。
重申我的例子,上面:
<div ng-repeat="datarow in datasource">
<select ng-model="datasource[$index].property" ng-options="option.first_name for option in datarow.options"></select>
</div>
我的主控制器会在注意到数组中某个对象的属性被更新时$ digest!