AngularJS中的Restangular承诺

时间:2015-08-13 08:42:53

标签: angularjs restangular angular-promise

我有一些SPA,用户可以添加,编辑,查看和删除项目。所有数据都保存在JSON文件中。所以,当我想添加/编辑/删除一些项目时,我使用PHP代码。它工作正常。

我没有查看和删除的问题,有添加/编辑的内容。

那么,它是如何运作的。在主窗体上,我有一个包含所有项目的列表和按钮创建新项目。当我点击它时,我会转到另一个带有文本字段的表单。填写完毕后,单击此表单上的“创建”按钮。结果,新项目在JSON文件中,我回到主窗体。但。有一个旧项目列表,没有新项目。用户编辑项目时会发生同样的事情。

我知道这完全取决于承诺。 Restangular是异步的,所以我的代码没有时间处理我告诉他的所有内容。我试图自己解决这个问题,但我只是不明白它应该是什么。

有我的控制器:

app.controller('ListController', function ($scope, customers, ListService) {
   $scope.customers = customers;
   cust = customers;
   $scope.removeItem = function removeItem(index) {
       $scope.customers.splice(index, 1);
       ListService.saveData($scope.customers);
   };
});

app.controller('CreateController', function ($scope, customers, ListService) {

   $scope.customers = customers;
   $scope.createItem = function createItem(item) {
       $scope.customers = customers;
       $scope.customers.push(item);
       ListService.saveData($scope.customers);
   };
});
app.controller('UpdateController', function ($scope, details, ListService) {
   $scope.item = details[0];
   var keep = {};
   for (var key in details[0]) {
       keep[key] = details[0][key];
   }

   $scope.updateItem = function updateItem() {
       $scope.customers = cust;
       var ind = 0;
       for (var i = 0; i < $scope.customers.length; i++) {
           if (($scope.customers[i].id == keep.id)) {
               ind = i;
           }
       }
       if (ind != -1) {
           $scope.customers.splice(ind, 1, $scope.item);
       }
       ListService.saveData($scope.customers);
   };
});

0 个答案:

没有答案