我使用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
属性。
答案 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的位置希望这能解决您的问题
快乐编码:)