【发布时间】:2015-07-22 09:45:10
【问题描述】:
This Answer did not help 这是非常相似的东西。我正在使用 Angular 1.3.15、Firebase 2.2.4 和 AngularFire 1.1.1。
我有一个工厂可以返回对正确 Firebase 的引用 (https://.firebaseio.com
angular.module('MyModule')
.constant('FIREBASE_URL', 'https://xxxxxxxxx.firebaseio.com/');
angular.module('MyModule')
.factory('GetFireBaseObject', function(FIREBASE_URL) {
return {
BaseURL: function() {
return new Firebase(FIREBASE_URL);
},
DataURL: function(Node) {
return new Firebase(FIREBASE_URL + Node);
}
};
}
);
然后控制器正在尝试从工厂获取数据。
angular.module('MyModule').factory("StoresData", ["$firebaseArray", "GetFireBaseObject",
function($firebaseArray, GetFireBaseObject) {
var StoresData = GetFireBaseObject.DataURL('Stores/');
return {
AllStores: function() {
return $firebaseArray(StoresData);
},
OneStore: function(StoreKey) {
var StoreKeyNo = parseInt(StoreKey);
return $firebaseArray(StoresData.child(StoreKeyNo));
}
};
}
]);
AllStores 引用调用将返回所有内容。但是,我没有使用 OneStore 调用获得记录。我已经验证我的键在 Firebase 结构中是数字的(没有引号),但这仍然找不到记录。
angular.module('MyModule').controller('StoreCtrl', ['$scope', "StoresData",
function ($scope, StoresData) {
$scope.Stores = StoresData.AllStores();
$scope.store = {};
$scope.DeleteStore = function(StoreId) {
$scope.Stores.$remove(StoreId);
};
$scope.SaveStore = function(store) {
store.$id = store.Key; // Integer Value
$scope.Stores.push(store);
$scope.Stores.$save(store);
$scope.store.Key = "";
$scope.store.Description = "";
};
$scope.SelectStore = function(StoreId) {
var OneStore = StoresData.OneStore(StoreId);
$scope.store.Key = OneStore.Key;
$scope.store.Description = OneStore.Description;
};
}
]);
我没有在调试器或屏幕上看到任何返回的内容。我现在什至不担心更新,只是想让选择工作。我已验证 HTML 正在为我尝试访问的记录返回正确的密钥。
将 OneStore 更改为:
OneStore: function(StoreKey) {
var StoresData = GetFireBaseObject.DataURL('Stores/' + StoreKey);
return new $firebaseArray(StoresData);
也不起作用。返回的数据是一个空数组。
【问题讨论】:
-
如果你尝试在 Onestore 函数中直接放入指向孩子的链接怎么办?
$firebaseArray('https://xxxxxxxxx.firebaseio.com/child') -
你可以直接在child上查询,就是我的意思。编辑了我之前的评论
-
似乎没有修复它。我什至尝试在没有运气的情况下对路径进行硬编码。一定很傻?
-
好的。是的,还有一种不同的方法可以以更具角度的样式添加您自己的键,但是您说您的阵列保持同步,所以这不是问题。确实很奇怪。你的请求成功了吗?你可以使用 $loaded() 承诺来检查它是否成功返回吗?
-
我们有a guide explaining every question posited here:使用$firebaseObject 记录,而不是$firebaseArray;介绍中的第 1 页介绍了 $loaded;使用 $add 而不是 push()。省去一些痛苦并阅读指南。
标签: angularjs firebase angularfire