LocalStorage огонь дважды для хранения объекта

0

Я пытаюсь сохранить объект в LocalStorage, но когда я запускаю setItem, его хранят два объекта (дубликат). Ниже приведены мои коды;

HTML

<form class="clearBoth"  ng-submit="addProject(projectInfo)">
      <div class="list" ng-model="projectInfo">
          <label class="item item-input item-stacked-label">
              <span class="input-label">Project Name</span>
              <input type="text" ng-model="projectInfo.name" placeholder="PSN" required>
          </label>


          <label class="item item-input item-stacked-label">
              <span class="input-label">Host</span>
              <input type="text" ng-model="projectInfo.host"  placeholder="http://psn.com.my" required>
          </label>

        <label class="item item-input item-stacked-label">
            <span class="input-label">Instance</span>
            <input type="text" ng-model="projectInfo.instance" placeholder="PSN" required>
        </label>

      </div>


      <button class="button button-block button-positive" ng-click="addProject(projectInfo)">Block Button</button>
      <button class="button button-block button-assertive" ng-click="removeProject()">Block Button</button>
  </form>

контроллер

.controller("ProjectAddCtrl", function($scope) {

    $scope.addProject = function (projectInfo) {

        var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];

        $scope.projects = [{
        name: "",
        host: "",
        instance: ""
        }];

    oldItems.push(projectInfo);
    localStorage.setItem('itemsArray', JSON.stringify(oldItems));

};

    $scope.removeProject = function () { localStorage.clear(); };

    console.log(JSON.parse(localStorage.getItem('itemsArray')));


})
Теги:
local-storage

1 ответ

1
Лучший ответ

Оба ng-click на <button> и ng-submit на <form> запускаются и, следовательно, вы видите, что те же данные добавляются дважды. Вы можете исправить это, добавив атрибут type="button" на первой кнопке.

Проверить документацию - значение по умолчанию для атрибута type submit и, следовательно, запускаются как события click и submit.

  • 0
    Лучше было бы удалить ng-click="addProject(projectInfo)" из кнопки и позволить ng-click="addProject(projectInfo)" работать правильно. Сделав это, кнопка ytpe не разрешает отправку с клавиатуры
  • 0
    Ах, моя ошибка Спасибо, кстати!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню