2016-01-09 5 views
1

Я использую angularfire для создания сайта, но я не могу инициализировать объект firebase в контроллере. Вот мой кодОшибка Angularfire: Firebase Object не является функцией

angular.module('displayApp').controller("ProductCtrl", function($scope, $firebaseObject,ProductDisplay) { 
    this.products = ProductDisplay; 

}); 

angular.module('displayApp').controller('descriptionCtrl', ['ProductDisplay','$stateParams','$firebaseObject',function (ProductDisplay,$firebaseObject,$stateParams) { 
    var pid = 'productid1' 
    var ref = new Firebase("https://bargainhawk.firebaseio.com/productDisplay/productid1"); 
    this.product =$firebaseObject(ref); 

}]) 

Это файл мой app.js

var displayApp= angular.module('displayApp', ["firebase",'ui.router']); 

    displayApp.value("DB_URL","https://bargainhawk.firebaseio.com/productDisplay"); 

    displayApp.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider,$urlRouterProvider) { 
     $urlRouterProvider.otherwise("/"); 

     $stateProvider 
     .state('home', 
     { 
      url:"/", 
      templateUrl:"app/views/user/product-grid.html", 
      controller:"ProductCtrl as collection" 
     }) 
     .state('description',{ 
       url:'/product/{pid}', 
      templateUrl:'app/views/user/description.html', 
      controller:'descriptionCtrl as description' 
     }) 
     .state('description.chat',{ 
      url:'/chat', 
      templateUrl:'app/views/user/chatWindow.html', 

     }) 
    }]) 

Вот мои заводы файл

angular.module('displayApp').factory("ProductDisplay", ["$firebaseObject","DB_URL", 
    function ($firebaseObject,DB_URL) { 
     var ref = new Firebase(DB_URL); 
     return $firebaseObject(ref);  
    }]) 

productCtrl работает, но descriptionCtrl нет. Я не могу найти ошибку, которую я делаю. Я попытался следующий код показан также

angular.module('displayApp').controller('descriptionCtrl', ['ProductDisplay','$stateParams','$firebaseObject',function (ProductDisplay,$firebaseObject,$stateParams) { 
    var products = ProductDisplay; 
    this.product = productDisplay.productid1; 
    console.log(ProductDisplay); 
    console.log(product); 
}]) 

ProductDisplay объекта, как это на консоли, но product показан как undefined хотя ProductDisplay имеет productid1 свойство.

ответ

1

Ну, если вы проверяете descriptionCtrl вы увидите, что порядок Params (зависимости) прошла не правильно

вы набрали:

angular.module('displayApp').controller('descriptionCtrl', ['ProductDisplay','$stateParams','$firebaseObject',function (ProductDisplay,$firebaseObject,$stateParams) { 
    //... 
}]) 

То, что вы должны Введены:

angular.module('displayApp').controller('descriptionCtrl', ['ProductDisplay','$stateParams','$firebaseObject',function (ProductDisplay,$stateParams,$firebaseObject) { 

}]) 

изменить положение $ firebaseObject с $ stateParams

Надеюсь, это исправит вашу проблему

Счастливое кодирование :)

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