1

ローカル ストレージに配列を格納しています。ユーザーがその配列内の単一のアイテムに移動すると、ネストされた配列にアイテムを追加できます。

[{
    "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;
        }


    }

});

単一のアイテムに入ったら、ユーザーがモーダルを開いてネストされたタスク配列にアイテムを追加し、ローカルストレージを更新できるようにしたいのですが、頭を抱えているようには見えません。私が今やっている方法は、タスクを追加するようですが、配列内の他のすべての投稿を削除します。

4

2 に答える 2

0

パーツだけでなく、ローカル ストレージからすべてのアイテムを読み取ってみてください。そうすれば、問題なく何でも追加、削除、または編集できます。その後、保存に進むことができます。

于 2016-02-24T07:50:19.403 に答える
0

Eventers.save($scope.eventer); 現在のイベントのみを保存しています。実際の実装はすべてを保存しようとしていますが、

save: function(eventers) {
      window.localStorage['eventers'] = angular.toJson(eventers);
    },

したがって、他のすべてのイベントを上書きします。

于 2016-02-24T07:54:06.670 に答える