更新本地存储中数组中的项
Update item in array in local storage
我在本地存储中存储了一个数组。 用户导航到该数组中的单个项目后,他们可以将项目添加到嵌套数组中:
[{
"id": "1",
"title": "test 1",
"venue": "test 1",
"day": "12",
"month": "January",
"year": "2016",
"date": "2016-02-23T14:53:24.118Z",
"tasks": []
}, {
"id": "2",
"title": "test 2",
"venue": "test 2",
"day": "22",
"month": "April",
"year": "2016",
"date": "2016-02-23T14:53:24.118Z",
"tasks": []
}]
我有 2 个控制器。一个以 ng-repeat 列出数组中的所有项目,另一个显示单个项目:
.controller('ProfileCtrl', function ($scope, Eventers) {
$scope.eventers = Eventers.all();
})
单项显示:
.controller('ProfileInnerCtrl', function ($scope, $stateParams, $ionicModal, Eventers) {
$scope.eventer = Eventers.get($stateParams.eventerId);
$ionicModal.fromTemplateUrl('new-task.html', function(modal) {
$scope.taskModal = modal;
},
{
focusFirstInput: false,
scope: $scope
});
$scope.createTask = function(task, index) {
$scope.eventer.tasks.push({
title: task.title
});
$scope.taskModal.hide();
Eventers.save($scope.eventer);
$scope.taskModal.hide();
};
})
和我的工厂:
.factory('Eventers', function() {
return {
all: function() {
var eventerString = window.localStorage['eventers'];
if (eventerString) {
return angular.fromJson(eventerString);
}
return [];
},
save: function(eventers) {
window.localStorage['eventers'] = angular.toJson(eventers);
},
newEventer: function(eventerId, eventerTitle,eventerVenue , eventerDay, eventerMonth, eventerYear, eventerDate) {
return {
id: eventerId,
title: eventerTitle,
venue: eventerVenue,
day: eventerDay,
month: eventerMonth,
year: eventerYear,
date: eventerDate,
tasks: []
};
},
get: function(eventerId){
var hell = window.localStorage['eventers'];
var eventers = JSON.parse(hell);
for (var i = 0; i < eventers.length; i++) {
if (parseInt(eventers[i].id) === parseInt(eventerId)){
console.log(eventerId);
return eventers[i];
}
}
return null;
}
}
});
一旦进入单个项目,我希望用户能够打开一个模式并将项目添加到嵌套任务数组,然后更新本地存储,但我似乎无法理解它。我现在这样做的方式似乎添加一个任务,但删除了数组中的所有其他帖子。
尝试从本地存储中读取所有项目而不仅仅是部分,然后您可以毫无问题地添加、删除或编辑任何内容。之后,您可以继续保存它。
Eventers.save($scope.eventer);
仅保存当前事件。当实际实现试图保存所有内容时
save: function(eventers) {
window.localStorage['eventers'] = angular.toJson(eventers);
},
因此,它覆盖了所有其他事件。
相关文章:
- 将数组存储到本地存储中,而不是替换
- 如何将数组存储
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 将对象/数组存储在 jQuery Cookie 中
- 想要将数组存储为 JavaScript 映射中的值
- 在 mysql 中使用多维数组存储 $_POST
- 将php多维数组存储在localstorage中
- 将数组存储在jQuery cookie中
- 如何将php数组存储在一个cookie中,然后通过javascript读取它
- 如何用单引号将数组存储在javascript中?有可能吗
- 将数组存储在html数据属性中
- 使用javascript将数组存储为json中的密钥对
- 将数组存储在函数内部与存储在对象内部有什么好处吗
- 试图使用javascript将Object.keys(obj)的返回数组存储在数组中,但得到错误“ReferenceEr
- 在javascript中使用数组存储一组具有固定值的变量
- 如何在localStorage (Javascript)中使用数组存储JSON
- 数组存储javascript
- 我如何从数组存储访问JS函数
- 关于如何使用数组存储其他变量名称的任何想法
- 在chartJs中使用动态数组存储标签和数据