更新 ng 重复中的嵌套对象
Update nested object within ng-repeat
>我有一个存储为$scope.activities
的"活动"数组。我正在 ng-repeat中迭代这些,在此过程中访问嵌套的值和对象。
其中一些嵌套对象具有与之关联的操作,例如"喜欢"和"rsvp'ing",然后调用我的后端并应更新 ng-repeat 中的值。该逻辑如下所示:
$scope.rsvpToEvent = function(eventId) {
eventService.rsvp(eventId, $rootScope.user._id).then(function (data) {
for (var i = 0; i < $scope.activities.length; i++) {
if($scope.activities[i].event) {
if($scope.activities[i].event._id == data._id) {
$scope.activities[i].event = data;
break;
}
}
}
},
function (errorMessage) {
});
};
我还尝试将$index
传递给函数并直接访问该活动,而不是使用 for 循环。
如果我控制台.log它会成功执行并更新值,但它没有更新 dom 或 ng-repeat 的值。我在另一个页面上使用类似的逻辑并且它工作正常,所以我假设这是因为我正在尝试像这样更新嵌套对象(另一个页面的逻辑不在嵌套对象上)。
其他类似的问题说这是范围没有得到更新的问题。但是,如果我将其包装在$scope.$apply()
中或之后调用它,则会出现"摘要已在进行中"错误。如果我尝试通过检查阶段来应用"安全"范围,则根本不会调用它,因为摘要已经在进行中。有没有另一种方法来确保 dom/ng-repeat 得到更新?
如果更容易,您可以将整个活动传递到函数中。
<div ng-repeat="activity in activities" ng-click="rsvpToEvent(activity)">
那么你就不需要循环或类似的东西了。
$scope.rsvpToEvent = function(activity) {
eventService.rsvp(activity.event._id, $rootScope.user._id).then(function (data) {
activity.event = data;
},
function (errorMessage) {
});
};
相关文章:
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 如何打印嵌套对象的所有值
- 设置嵌套对象属性的更好方法
- 嵌套对象结构
- 如何递归地获取嵌套对象中所有子对象的列表
- 更改嵌套对象的父子相关id
- 如何通过json对象数组为嵌套对象赋值
- Ember.js(2.5.0)如何设置嵌套对象值
- 嵌套对象文本访问父级
- 如何对两个嵌套对象进行排序
- 在javascript中使用方括号表示法的嵌套对象
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- 更新嵌套对象的多个字段
- MongoDB嵌套对象数组后查询
- 在流星中插入嵌套对象
- 将嵌套对象数据添加到窗体中
- Chai深度包含了对嵌套对象的断言
- 使用Angular.js解析JSON中的嵌套对象数组
- 如何以编程方式添加到可变嵌套对象中
- Javascript嵌套对象访问根级别