【问题标题】:Angularjs JavaScript to fast when using PUT in a CRUD SPA在 CRUD SPA 中使用 PUT 时,Angularjs JavaScript 会更快
【发布时间】:2014-09-30 00:05:25
【问题描述】:

a RESTful CRUD SPA with angularjs 为例。

当使用 Angularjs 的 RESTful 方法时,我遇到了更新/删除/等的情况。没有硬刷新 (F5) 不会反映在列表中。这是因为保存/更新/删除花费的时间比 JavaScript 运行下一个应该更新列表的命令所花费的时间长。

app.controller('UserDetailCtrl', ['$scope', '$routeParams', 'UserFactory', '$location',
function ($scope, $routeParams, UserFactory, $location) {

    // callback for ng-click 'updateUser':
    $scope.updateUser = function () {
        UserFactory.update($scope.user);  // Before this is done
        $location.path('/user-list');     // this has already fetched the (outdated) list
    };

来自例如.NET MVC 在这种情况下,我会从更新中返回项目列表(返回值)。搭建的 Web API 控制器是 RESTful 的,它不会从 POST、PUT 或 DELETE 返回任何内容。

    // DELETE api/<controller>/5
    public **void** Delete(int id)
    {
        // delete...
    }

在 Angularjs 中,我可以想象几种方法来确保用户列表始终是最新的。 (例如在 $scope 中维护一个列表,并与 POST/PUT/DELETE 调用同时修改它,但看起来很麻烦)

Angularjs 中使用 RESTful 风格来确保例如的最佳方法是什么?列表是否包含准确的最新数据?如果没有通用方法,那么在此示例应用中处理它的最佳方法是什么。

【问题讨论】:

  • 由于 Web API 控制器是 RESTful,它不会从 POST、PUT 或 DELETE 返回任何内容 - RESTful 没有理由不返回任何内容。
  • 感谢您的澄清,我想这只是 Web API 脚手架的默认设置。

标签: angularjs rest asp.net-web-api single-page-application


【解决方案1】:

您可以等待 AJAX 请求完成后再更改路径:

UserFactory.update($scope.user, function() {
    $location.path('/user-list');
});

【讨论】:

【解决方案2】:

在这样的场景中,我使用了 $http 或 $resource 服务。

使用 $http 你会在成功回调中重定向

使用 $resource 你可以在 promise .$promise.then 中重定向

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2018-12-27
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 2015-06-01
    相关资源
    最近更新 更多