保存数据Angular和Firebase列表

时间:2014-08-12 11:17:18

标签: angularjs firebase

我已经在项目列表中添加了一个输入,但我希望将多个输入添加到相同的$ id。怎么做。 我不能处理它。我一直在寻找另一个解决方案,但一切都让我感到错误

我的app.js

var sampleApp = angular.module('sampleApp', ['ngRoute','firebase']);

sampleApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/List', {
  templateUrl: 'list.html',
  controller: 'ListController'
      }).
      when('/Zarzad', {
  templateUrl: 'zarzad.html',
  controller: 'ListController'
      }).
      otherwise({
  redirectTo: '/List'
      });
}]);

sampleApp.controller('ListController', function($scope,$firebase) {
  var ref = new Firebase('https://<my url>.firebaseio.com/');
  var sync = $firebase(ref);
  $scope.projects = sync.$asArray();

  $scope.addMessage = function(data) {
   $scope.projects.$add({data: data});
  }
});

我的hmtl

<form ng-submit="addMessage(newMessageText)">
      <input ng-model="newMessageText" />
      <button type="submit">add message</button>
</form>

当我添加另一个输入时,我不知道corect如何为许多输入编写代码。我试过这样的事情:

sampleApp.controller('ListController', function($scope,$firebase) {
  var ref = new Firebase('https://<my url>.firebaseio.com/');
  var sync = $firebase(ref);
  $scope.projects = sync.$asArray();

  $scope.addMessage = function(text,data) {
    $scope.projects.$add({text: text, data: data});
  }
});

和html一样:

<form ng-submit="addMessage(newMessageText)">
      <input ng-model="newMessageText" name="text" />
      <input ng-model="newMessageData" name="data" />
      <button type="submit">add message</button>
</form>

这是一个错误:

Error: Firebase.set failed: First argument contains undefined in property 'data'
    at Error (<anonymous>)
    at Ba (https://cdn.firebase.com/js/client/1.0.18/firebase.js:11:54)
    at Ba (https://cdn.firebase.com/js/client/1.0.18/firebase.js:12:221)
    at Aa (https://cdn.firebase.com/js/client/1.0.18/firebase.js:10:410)
    at D.E.set (https://cdn.firebase.com/js/client/1.0.18/firebase.js:147:98)
    at Object.c.$push (https://cdn.firebase.com/libs/angularfire/0.8.0/angularfire.min.js:7:6889)
    at Object.c.$add (https://cdn.firebase.com/libs/angularfire/0.8.0/angularfire.min.js:7:516)
    at g.$scope.addMessage (http://localhost/test/js/app.js:25:21)
    at http://localhost/test/js/angular.min.js:179:263
    at http://localhost/test/js/angular.min.js:204:178

1 个答案:

答案 0 :(得分:0)

我找到了解决方案: app.js

$scope.addTodo = function () {
    var newData = $scope.newData.trim();
    var newGodz = $scope.newGodz.trim();
    var newTemat = $scope.newTemat.trim();

    $scope.projects.$add({
      data: newData,
      godz: newGodz,
      temat: newTemat
    });

    $scope.newData = '';
    $scope.newGodz = '';
    $scope.newTemat = '';
  };

而html是:

<form id="todo-form" ng-submit="addTodo()">
      <input type="text" id="new-data" placeholder="Data..." ng-model="newData" autofocus />
      <input type="text" id="new-godz" placeholder="Godzina..." ng-model="newGodz" autofocus /><br />
      <textarea id="new-temat" placeholder="Temat spotkania..." ng-model="newTemat" autofocus rows="4" width="430px;"></textarea><br />
      <button class="btn btn-danger btn-lg" type="submit">Dodaj pozycję</button>
</form>