2016-03-25 7 views
0

JS:Ionic + Firebase redundante Speicherung von Daten

angular.module('ShareGoalsApp') 

.controller('newGoalCtrl', function($scope, $ionicPopup, $firebaseArray) { 

    var goal_collection = new Firebase("https://sharegoals.firebaseio.com/sharegoals"); 
    $scope.goals = $firebaseArray(goal_collection); 


    $scope.addNewGoal = function(goals) { 
     $scope.goals.$add(goals); 
    }; 
}); 

HTML an die Steuerung im Zusammenhang oben:

<ion-pane view-title="goal"> 
    <ion-header-bar class="bar-positive"> 
     <div class="buttons"> 
      <a nav-transition="android" class="button button-icon icon ion-arrow-left-b" ng-click="" href="#/index"></a> 
     </div> 
     <h1 class="title">Add New Goal</h1> 
    </ion-header-bar> 


    <ion-content class="padding has-header has-footer" scroll="false" > 
     <div class="list"> 
      <label class="item item-input"> 
       <input type="text" placeholder="#Title" ng-model="goals.gTitle"> 
      </label> 
      <label class="item item-input"> 
       <span class="hashtag-title">#{{goals.gTitle}}</span> 
      </label> 
      <label class="item item-input"> 
       <textarea placeholder="Goal" ng-model="goals.gDescription"></textarea> 
      </label> 
     </div> 
    </ion-content> 


    <ion-tabs class="tabs-icon-top tabs-color-active-positive"> 
     <button class="button button-positive button-bar no-round-corner" ng-click="addNewGoal(goals)">Add Goal</button> 
    </ion-tabs> 
</ion-pane> 

was zur Feuerbasis geschieht, ist dies:

[id] 
name: "value1" 

[id2] 
0 
    name: "value1" 
name2: "value2" 

[id3] 
0 
    name: "value1" 
1 
    name2: "value2" 
name3: "value3" 

wie es fügt neue Daten ... es holt die Daten vor und fügt sie dann der neuen hinzu ... es hat jetzt redundante Werte im gesamten Firebase-Speicher.

Antwort

1

Ihr Problem liegt in Ihrer addNewGoal-Methode. Zuerst das gesamte Array von Zielen erhalten mit $scope.goals = $firebaseArray(goal_collection);

Und wenn man addNewGoal nennen geben Sie das gleiche Array an die Funktion und es in das Array wird hinzugefügt, wenn Sie $scope.goals.$add(goals);

verwenden Wenn Sie nur hinzufügen möchten ein einzelnes neues Ziel Ich schlage vor, eine separate $ scope-Variable für das neue Ziel zu verwenden und diese an die Funktion addNewGoal zu übergeben, die funktionieren sollte.

+0

Danke ... es funktioniert jetzt !!! Jetzt ist das nächste Problem, wie man Daten holt ... -_- –

Verwandte Themen