2016-06-02 3 views
0

オブジェクトをLocalStorageに格納しようとしていますが、私がsetItemをトリガーすると、2つのオブジェクト(複製)が格納されます。以下は私のコードです。LocalStorageはオブジェクトを格納するために2回起動します

.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'))); 


}) 

答えて

1

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> 

コントローラは<form><button>ng-submitの両方ng-clickがトリガされ、したがって、あなたは二度追加され、同じデータを見ています。最初のボタンにtype="button"属性を追加して修正できます。

チェックdocumentation - type属性のデフォルト値は両方とも、submitひいてはでclicksubmitのイベントが解雇されています。

+0

ボタンから 'ng-click =" addProject(projectInfo) "'を削除し、送信が適切になるようにしてください。それをytpeボタンにするとキーボードの送信ができなくなる – charlietfl

+0

ああ、私の間違い。途中でありがとう! – fahmishah

関連する問題