我有一些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);
};
});