2014-12-03 3 views
1

Firebase와 AngularJS를 번들로 사용하고 있으며 둘 다 학습 과정에 있기 때문에 추측합니다. Angular를 사용하여 항목을 저장하는 데 문제가 있습니다. 공장에서 항목을 저장하면 AngularJS 및 Firebase에 오류가 발생합니다.

이 내가 내 공장에 내 아이템을 전달하는 내 흐림 기능 (updateLink의)를 사용하고 내 HTML

<div ng-repeat="link in links | orderBy: link.number"> 
    <input type="number" ng-model="link.number" ng-blur="updateLink(link)"> 
    {{ link.name }}: <a href="{{ link.url }}" target="_blank">{{ link.url }}</a> 
</div> 

내 스크립트

var app = angular.module('LinkApp', ['firebase']); 

    app.constant('FirebaseLinks', 'https://[hidden].firebaseio.com/links') 

    app.controller('LinkCtrl', ['$scope', 'LinksFactory', 
     function($scope, LinksFactory) { 
      // get links 
      $scope.links = LinksFactory.getItems(); 

      // update link 
      $scope.updateLink = function(link) { 
       LinksFactory.updateItem(link); 
      }; 
     } 
    ]); 

    app.factory('LinksFactory', ['$firebase', 'FirebaseLinks', 
     function($firebase, FirebaseLinks) { 
      var ref = new Firebase(FirebaseLinks); 
      var items = $firebase(ref); 

      return { 
       getItems: function() { 
        return items.$asArray(); 
       }, 

       updateItem: function(item) { 
        items.$save(item); 
       } 
      }; 
     } 
    ]); 

이지만, 거기에서 나는이를 얻을 수 오류 : "TypeError : undefined가 함수가 아닙니다."

내 함수를 내 함수에 전달하고 width $ scope.links. $ save (link)에서 콜렉션을 저장하면 성공합니다.

어떻게 될 수 있습니까?

감사합니다. 자세한 내용이 필요하다고 말하십시오.

+1

왜'$ firebase (ref). $ asArray()'가 아닌가요? AngularFire가 이미 달성 한 것과 똑같은 일을하는이 어색한 래퍼가 왜 어째서입니까? – Kato

답변

1

많은 일을 한 후에 알아 냈습니다.

필자는 자신의 팩토리 함수를 반환해야하고 마지막에 $ asArray()로 변수 'items'를 호출하고 getItems 함수에서 $ asArray()를 제거해야했습니다.

지금은 작동합니다.

관련 문제