ローカル ストレージに配列を格納しています。ユーザーがその配列内の単一のアイテムに移動すると、ネストされた配列にアイテムを追加できます。
[{
"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つのコントローラーを持っています。1 つは配列内のすべてのアイテムを ng-repeat でリストし、もう 1 つは単一のアイテムを表示します。
.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;
}
}
});
単一のアイテムに入ったら、ユーザーがモーダルを開いてネストされたタスク配列にアイテムを追加し、ローカルストレージを更新できるようにしたいのですが、頭を抱えているようには見えません。私が今やっている方法は、タスクを追加するようですが、配列内の他のすべての投稿を削除します。