这是我关于堆栈溢出的第一个问题,所以请耐心等待: - )。
我有一个角度应用程序,我想显示从firebase检索到的用户信息。
有趣的是,当我在指令而不是控制器中发出firebase请求时,我从firebase获得了一些不同的数据。从我的指令中检索到的firebase数据是一个带有方法的对象。从我的控制器检索的数据是纯粹的json,只有数据,我插入了。
指令
angular.module('routerangular')
.directive('raEditor',[ "$firebaseArray", "$firebaseAuth", function( $firebaseArray, $firebaseAuth){
return {
restrict: 'E',
replace: true,
controller: ["$scope", function ($scope) {
var messagesRef = new Firebase("https://***.firebaseio.com/messages");
messagesRef.onAuth(authDataCallback);
function authDataCallback(authData) {
if (authData) {
$scope.users = $firebaseArray(messagesRef);
}
}
}]
};
}]);
我正在尝试通过在html中键入{{users}}来访问数据,但它只是说未定义。下面是console.log的输出,我输出的是从firebase收到的数据。
[] ***** this is the data I need *****0: Object$id: "-JrIUxOGb54jTV1R9zjy"$priority: nulldescription: "awesome chattionado"userName: "mcChat".....**** To try and keep this short, I have deleted some of the methods from the console.log, not data ****..... $save: () { [native code] }$watch: () { [native code] }length: 1__proto__: Array[0]
控制器:
在控制器中,我使用了几乎相同的代码,但是我从firebase获得了一个合适的json数据集,我可以通过在html中键入{{users}}来检索数据。
angular.module('routerangular')
.controller('DisplayvideoCtrl', function ($scope, $firebaseObject, $firebaseArray, $firebaseAuth) {
var messagesRef = new Firebase("https://****.firebaseio.com/messages");
messagesRef.onAuth(authDataCallback);
function authDataCallback(authData) {
if (authData) {
$scope.users = $firebaseArray(messagesRef);
}
}
});
控制器只输出存储在json中的数据:
[{"description":"awesome chattionado","userName":"mcChat"}]
我在这里缺少什么?为什么我无法从指令中的firebase检索数据。
答案 0 :(得分:0)
$ scope在指令中的行为略有不同,隔离范围仅继承显式声明的属性。在这里排名前10位的错误中查看#8 Scoping $scope's
由于{{users}}会从您的指令返回一个对象,请尝试{{users.description}}和{{users.userName}}。
答案 1 :(得分:0)
谢谢大家的回复,我部分想出来了,并认为我可以解决这个问题。解决方案是,指令中的对象带有两个变量:$ id和$ value,它们可以在ng-repeat中用于从firebase生成键/值。谢谢大家。