2013-09-18 3 views
3

Я пытаюсь отобразить данные из firebase, и у меня есть код ниже. Я уже заявлял о зависимости от firebase для моего приложения.Ошибка «undefined is not a function» using angularFire

.controller('AdvMainCtrl', ['$scope', 'dataLoad', 

    function($scope, dataLoad, $route, $routeParams, $location, $resource, angularFire) { 
     var categoryPromise = dataLoad.loadCategories($scope, 'categories'), 
     tmPromise = dataLoad.loadTransportationMode($scope, 'tModes'), 
     tourPromise = dataLoad.loadAdventures($scope, 'tours'); 
     categoryPromise.then(function() { 
      console.log('data loaded'); 
     }); 

     $scope.$watch('category', function() { 
      if (typeof $scope.category === 'undefined') return; 
      console.log('category changed'); 
      console.log($scope.category.name); 
     }); 
     $scope.$watch('tMode', function() { 
      if (typeof $scope.tMode === 'undefined') return; 
      console.log('tm changed'); 
      //console.log($scope.transportationMode.name); 
     }); 
    var ref = new Firebase("https://wpladv.firebaseio.com/adventure"); 
    $scope.tours = []; 
    angularFire(ref, $scope, "tours"); 
    } 
]) 

в консоли я вижу ошибку, возникающую в angularFire(ref, $scope, "tours"); заявлении. Я не уверен, как это исправить.

весь код в моем контроллере

.controller('AdvMainCtrl', ['$scope', 'dataLoad', 
     function($scope, dataLoad, $route, $routeParams, $location, $resource, angularFire) { 
      var categoryPromise = dataLoad.loadCategories($scope, 'categories'), 
      tmPromise = dataLoad.loadTransportationMode($scope, 'tModes'), 
      tourPromise = dataLoad.loadAdventures($scope, 'tours'); 
      categoryPromise.then(function() { 
       console.log('data loaded'); 
      }); 

      $scope.$watch('category', function() { 
       if (typeof $scope.category === 'undefined') return; 
       console.log('category changed'); 
       console.log($scope.category.name); 
      }); 
      $scope.$watch('tMode', function() { 
       if (typeof $scope.tMode === 'undefined') return; 
       console.log('tm changed'); 
       //console.log($scope.transportationMode.name); 
      }); 
     var ref = new Firebase("https://wpladv.firebaseio.com/adventure"); 
     $scope.tours = []; 
     angularFire(ref, $scope, "tours"); 
     } 
    ]) 

ошибка показывает на "вар categoryPromise = dataLoad.loadCategories ($ рамки, 'категории')," заявление

У меня есть следующий код в моем файле api js.

angular.module('localAdventuresApp') 
    .factory('dataLoad', ['angularFire', 
     function(angularFire) { 
      var dbUrl = 'https://wpladv.firebaseio.com/'; 

      return { 
       loadCategories: function(scope, items) { 
        var cat = '/category'; 
        return angularFire(dbUrl + cat, scope, items, []); 
       }, 
       loadTransportationMode: function(scope, items) { 
        var cat = '/transportMode'; 
        return angularFire(dbUrl + cat, scope, items, []); 
       }, 
       loadAdventures: function(scope, items) { 
        var cat = '/adventures'; 
        return angularFire(dbUrl + cat, scope, items, {}); 
       } 
      } 
     } 
    ]) 

, что отображается ошибка в "возвращение angularFire (DbUrl + кошка, рамки, элементы, []);" заявление здесь. Ошибка, которую я вижу в моей консоли, - «Ошибка: укажите ссылку Firebase вместо URL-адреса, например: new Firebase (url)».

+0

Вы впрыскивать firebase зависимость? –

+0

Да, я ввел его в свое приложение. angular.module ('localAdventuresApp', ['firebase',] – Newbee

+0

добавил все необходимые зависимости, теперь получая сообщение об ошибке «Пожалуйста, укажите ссылку на Firebase вместо URL-адреса, например: new Firebase (url)». Как я могу исправить это ? – Newbee

ответ

3

вам нужно вводить зависимости к контроллеру

.controller('AdvMainCtrl', ['$scope', 'dataLoad', '$route', '$routeParams', '$location', '$resource', 'angularFire', 
    function($scope, dataLoad, $route, $routeParams, $location, $resource, angularFire) { 
     // your code here 
    } 
]) 
2

ошибка «Пожалуйста, предоставьте Firebase ссылку вместо URL, например: новый Firebase (URL)» был встречающихс, потому что я имел angularfire версия> 0,3 +0,0. Все, что я должен был сделать, это изменить dbUrl + cat на новую Firebase (dbUrl + cat). Это определило проблему. Спасибо всем за ваши ценные предложения.

код после изменения

angular.module('localAdventuresApp') 
    .factory('dataLoad', ['angularFire', 
     function(angularFire) { 
      var dbUrl = 'https://wpladv.firebaseio.com'; 

      return { 
       loadCategories: function(scope, items) { 
        var cat = '/category'; 
        console.log(dbUrl); 
        var ref = new Firebase(dbUrl + cat); 
        return angularFire(ref, scope, items, []); 
       }, 
       loadTransportationMode: function(scope, items) { 
        var cat = '/transportMode'; 
        var ref = new Firebase(dbUrl + cat); 
        return angularFire(ref, scope, items, []); 
       }, 
       loadAdventures: function(scope, items) { 
        var cat = '/adventure'; 
        var ref = new Firebase(dbUrl + cat); 
        return angularFire(ref, scope, items, {}); 
       } 
      } 
     } 
    ]) 
Смежные вопросы