2014-11-24 4 views
0

저는 angularFire를 사용하여 $ add를 사용하여 폼의 데이터를 firebase에 저장하려고합니다. 어떤 도움이라도 대단히 감사하겠습니다. 콘솔은 모든 작업을 기록하고 콘솔에서 데이터를 검색 할 수 있습니다. 모든 코드를 유감스럽게 생각합니다 ... 필요한 모든 자료를 제공했는지 확인하고 싶었습니다.angularFire가 데이터베이스를 firebase에 추가 할 수 없습니다.

app.js :

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

    creativeBillingApp.constant('FIREBASE_URI', "https://XXXX.firebaseIO.com/"); 

    creativeBillingApp.controller('MainCtrl', ['$scope', 'groupsService', function($scope, groupsService, $firebase) { 

    console.log('Works') 


    $scope.newGroup = { 
    name: '', 
    status: '' 

    }; 

    $scope.addGroup = function(newGroup){ 

    console.log(newGroup); 

groupsService.addGroup(); 
    $scope.newGroup = { 
    name: '', 
    status: '' 

    }; 
}; 
$scope.updateGroup = function (id) { 
    groupsService.updateGroup(id); 
}; 

$scope.removeGroup = function(id) { 
    groupsService.removeGroup(id); 
}; 
}]); 




creativeBillingApp.factory('groupsService', ['$firebase', 'FIREBASE_URI', 
    function ($firebase, FIREBASE_URI) { 
    'use strict'; 
    var ref = new Firebase(FIREBASE_URI); 
    return $firebase(ref).$asArray(); 

var groups = $firebase(ref).$asArray(); 

var getGroups = function(){ 
    return groups; 
}; 

var addGroup = function (newGroup) { 
    console.log(newGroup) 
    groups.$add(newGroup); 
}; 

var updateGroup = function (id){ 
    groups.$save(id); 
}; 

var removeGroup = function (id) { 
    groups.$remove(id); 
}; 
return { 
    getGroups: getGroups, 
    addGroup: addGroup, 
    updateGroup: updateGroup, 
    removeGroup: removeGroup, 
} 

}]); 

index.html을 :

TypeError: undefined is not a function 
at Scope.$scope.addGroup (http://localhost:9000/scripts/app.js:35:19) 

35가에있는 app.js 라인 :

  <form role="form" ng-submit="addGroup(newGroup)"> 
      <div class="form-group"> 
       <label for="groupName">Group Name</label> 
       <input type="text" class="form-control" id="groupName" ng-model="newGroup.name"> 
      </div> 
      <div class="form-group"> 
       <label for="groupStatus">Group Status</label> 
       <select class="form-control" ng-model="newGroup.status"> 
       <option value="inactive">Inactive</option> 
       <option value="active">Active</option> 
       </select> 
      </div> 
      <button type="submit" class="btn btn-default">Submit</button> 
      </form> 

이 내가 점점 오전 오류가 groupsService.addGroup();을 참조하십시오. 위에 주어진 app.js 코드에서.

답변

5

먼저 $FirebaseArray을 만든 후에 서비스를 반환합니다. 그 후에 또 다른 $FirebaseArray을 작성 중입니다.

return $firebase(ref).$asArray(); 

return 문을 제거하십시오. 이로 인해 서비스가 조기에 반환되고 첨부 된 방법 중 어느 것도 귀하의 서비스에 적용되지 않습니다.

groupService.addGroup()에서 $asArray의 기능이 아닌 push를 호출합니다. .$add()으로 전화해야합니다. newGroup 인수도 컨트롤러에서 전달되지 않습니다.

$.push 방법은 $firebase 바인딩의베이스에서 사용할 수 있습니다. $FirebaseArray$add 메서드를 사용하면 새 레코드가 Firebase에 푸시됩니다.

See the docs for more info.

var addGroup = function (newGroup) { 
    console.log(newGroup) 
    groups.$add(newGroup); 
}; 

Plunker Demo

그런 다음 컨트롤러에 간단히 호출 할 수

$scope.addGroup = function(newGroup){ 
    groupsService.addGroup(newGroup); 

    $scope.newGroup = { 
    name: '', 
    status: '' 
    }; 
}; 
+0

가 응답을 주셔서 감사합니다! 나는 $ add를 시도했고 콘솔에서 같은 에러를 주었다. – Lizajean

+1

맨 위로 서비스에서 돌아오고 있습니다. 해당 행을 제거하십시오. 답변을 업데이트했습니다. –

+0

감사합니다. 그 오류를 없애 버렸지 만, 지금은 var addGroup 아래에서 console.log (newGroup)을 호출 할 때 콘솔에서 정의되지 않은 값을 반환합니다. – Lizajean

관련 문제