Angularfire错误:Firebase对象不是函数

时间:2016-01-09 09:06:41

标签: firebase angularfire

我使用angularfire制作网站,但我无法在控制器中初始化firebase对象。这是我的代码

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 个答案:

答案 0 :(得分: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) {

}])

使用$ stateParams

更改$ firebaseObject的位置

希望这能解决您的问题

快乐编码:)