gpt4 book ai didi

javascript - 在 ng-repeat 中更新嵌套对象

转载 作者:行者123 更新时间:2023-11-29 22:08:36 24 4
gpt4 key购买 nike

我有一个存储为 $scope.activities 的“事件”数组。我在 ng-repeat 中迭代这些,一路访问嵌套的值和对象。

这些嵌套对象中的一些具有与之关联的操作,例如“喜欢”和“回复”,然后调用我的后端并且应该更新 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 循环。

这会成功执行并更新值,如果我对它进行 console.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 - 在 ng-repeat 中更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19521452/

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