2016-03-25 6 views
0

JS:Ионные + Firebase избыточного хранение данных

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, связанный с контроллером выше:

<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> 

, что происходит с firebase это:

[id] 
name: "value1" 

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

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

как это добавляет новые данные ... он извлекает данные перед ним, а затем добавляет их в новый ... теперь он имеет избыточные значения во всем хранилище firebase. .

ответ

1

У вас проблема в методе addNewGoal. Сначала вы получите весь спектр задач, используя $scope.goals = $firebaseArray(goal_collection);

И когда вы звоните addNewGoal вы даете, что тот же массив в функцию и добавляется в массив, когда вы используете $scope.goals.$add(goals);

Если вы хотите только добавить единственной новой целью я предлагаю использовать отдельную переменную $ scope для этой новой цели и передать ее функции addNewGoal, которая должна работать.

+0

Спасибо ... это сейчас работает !!! теперь следующей проблемой является получение данных ... -_- –

Смежные вопросы