【问题标题】:How to refresh the list of items after deleting one item using AngularJS?使用AngularJS删除一个项目后如何刷新项目列表?
【发布时间】:2015-05-17 19:20:03
【问题描述】:

我是 AngularJS 领域的新手,我正在尝试将它与 ASP.NET Web API 一起使用。我现在正在努力使用删除功能。用户应该能够从项目列表中删除项目,并且当他成功删除项目时,应该在删除后立即更新(或刷新)列表。我已经实现了删除功能,但是删除后列表没有更新,不知道为什么。

这是Web API中删除功能的代码:

// DELETE api/<controller>/5
        public void Delete(int id)
        {
            itemRepository.DeleteItem(id);
        }

这里是 AngularJS 控制器代码:

app.controller('itemsController', ['itemsFactory', 'itemFactory', function (itemsFactory, itemFactory) {

        var vm = this;
        vm.message = "Welcome to Items Page";

        vm.Items= itemsFactory.query();

        // callback for ng-click 'deleteItem':
        vm.deleteItem = function (aId) {
            itemFactory.delete({ id: aId });
            vm.Items= itemsFactory.query();
        };
}]);

这里是 AngularJS 服务代码:

app.factory('itemsFactory', function ($resource) {
    return $resource('/api/items', {}, {
        query: { method: 'GET', isArray: true },
        create: { method: 'POST' }
    })
}); 

app.factory('itemFactory', function ($resource) {
    return $resource('/api/items/:id', {}, {
        show: { method: 'GET' },
        update: { method: 'PUT', params: { id: '@id' } },
        delete: { method: 'DELETE', params: { id: '@id' } }
    })
});

那么如何在任何成功的删除操作后立即更新项目列表?

【问题讨论】:

    标签: c# angularjs asp.net-web-api


    【解决方案1】:

    那是因为 itemFactory.delete 在您的情况下是异步运行的 $resource 对象。所以问题出在这一行:

    // callback for ng-click 'deleteItem':
    vm.deleteItem = function (aId) {
    
        // You send request to the server
        itemFactory.delete({ id: aId });
    
        // You don't get response from the server yet, so your item hasn't deleted.
        vm.Items= itemsFactory.query();
    };
    

    因此,您只需像这样在itemFactory.delete 回调中更新您的 vm.Items:

    vm.deleteItem = function (aId) {
        itemFactory.delete({ id: aId }, function () {
            // Update your items after you get success response from the server after deleting
            vm.Items= itemsFactory.query();
        });
    };
    

    【讨论】:

    • 感谢您的帮助。如果您能帮助我并告诉我在删除后从服务器获得成功响应后如何更新项目列表,我将不胜感激。
    猜你喜欢
    • 2019-08-16
    • 1970-01-01
    • 2017-08-02
    • 2021-09-02
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多