gpt4 book ai didi

javascript - ngResource 使用 $delete 从查询对象中删除记录

转载 作者:行者123 更新时间:2023-11-28 00:49:28 24 4
gpt4 key购买 nike

对 Angular 来说相当陌生。我想使用 Angular 的 $resource 库来使用我们的 API 服务。我对删除通过 query() 方法获得的记录的正确方法有点迷失。具体来说,我们有一个用于用户通知的端点。我们希望在页面加载时获取所有用户通知,使用 ng-repeat 循环结果并在导航栏中显示通知。当用户单击删除图标时,应删除相应的通知。这是我当前拥有的代码的精简版本:

Js:

angular.module('myapp', ['ngResource']).factory('Notifications',function($resource){
return $resource('/apiv2/user/notifications/:id', {id:'@id'});
}).controller('NavigationController',['$scope','Notifications',function($scope, Notifications){
$scope.notifications = Notifications.query();

$scope.deleteNotification = function(notification){
notification.$delete();
};
}]);

HTML:

<ul>
<li ng-repeat="notification in notifications">
<i class="icon-remove" ng-click="deleteNotification(notification)"></i>
</li>
</ul>

使用此代码,当用户单击删除图标时,单个通知对象将传递到 deleteNotification 方法,并通过 api 从后端正确删除。到目前为止,一切都按预期进行。但是,如果我事后查看 $scope.notifications 对象,刚刚删除的通知仍然包含损坏的数据:

{$promise:未定义,$resolved:true}

理想情况下,我希望从通过 .query() 方法返回的对象中删除此记录,以反射(reflect)其在后端的状态,而不必执行新的 .query()。

如有任何帮助,我们将不胜感激!对于模糊的描述和/或不完整/不准确的代码,我深表歉意,我在晚餐时通过手机键盘凭内存输入了这一切,所以天知道我是否错过了一些东西。

最佳答案

更好的方法:(请参阅 AngularJS ngResource delete event )

$scope.deleteNotification = function (index) {
$scope.notifications[index].$delete();
$scope.notifications.splice(index, 1);
}

在你的标记中就这样做

ng-click="deleteNotification($index)"

可能有更好的方法来做到这一点,因为这会引发控制台错误(但仍然有效),但这就是我正在做的:

$scope.notifications = Notifications.query();

$scope.deleteNotification = function(notification){
notification.$delete();
$scope.notifications = $scope.notifications.filter( function(n)
return (n != notification);
}); // filter everything but
};

如果你使用下划线,有一种更漂亮的方式来编写删除内容。

关于javascript - ngResource 使用 $delete 从查询对象中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941854/

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