2014-09-28 32 views
0

例如,以a RESTful CRUD SPA with angularjs爲例。Angularjs JavaScript在CRUD SPA中使用PUT時速度更快

在Angularjs中使用RESTful方法時,我遇到了update/delete/etc等情況。沒有進行硬刷新(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中使用REST風格確保最佳方法是什麼?一個列表有準確的最新數據?如果沒有一般的方法,在這個示例應用程序中處理它的最佳方式是什麼。

+0

由於Web API控制器是RESTful的,它不會從POST,PUT或DELETE_返回任何東西 - RESTful是沒有理由不返回的ñ什麼。 – zeroflagL 2014-09-28 19:05:28

+0

感謝您的澄清,我想這只是一個Web API腳手架默認。 – lko 2014-09-28 19:13:39

回答

2

你可以等待AJAX​​請求改變路徑之前完成:

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

啊,回調。 http://www.w3schools.com/jquery/jquery_callback.asp完美適合! – lko 2014-09-28 19:18:49