Angularjs $rootScope不工作-值未出现在视图中
我正在关注Lynda.com使用angularjs构建数据驱动的应用程序 authentication.js已为$rootScope.currentUser分配了Firebase中用户的值,并在index.html中显示{{currentUser.firstname}。用户已登录,Firebase中的值正确,但页面上未显示任何内容Angularjs $rootScope不工作-值未出现在视图中,angularjs,firebase,Angularjs,Firebase,我正在关注Lynda.com使用angularjs构建数据驱动的应用程序 authentication.js已为$rootScope.currentUser分配了Firebase中用户的值,并在index.html中显示{{currentUser.firstname}。用户已登录,Firebase中的值正确,但页面上未显示任何内容 authentication.js myApp.factory('Authentication', function($firebase, $firebaseAu
authentication.js
myApp.factory('Authentication', function($firebase,
$firebaseAuth, $routeParams, $rootScope, $location, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL);
var auth = $firebaseAuth(ref);
auth.$onAuth(function(authUser){
if(authUser) {
var user = new Firebase(FIREBASE_URL + '/users/' + authUser.uid);
$rootScope.currentUser = user;
console.log("logged in as:", authUser.uid);
//console.log($scope.currentUser);
}else{
console.log("logged out");
$rootScope.currentUser = '';
}
});
//Temporary object
var myObject = {
login: function(user) {
return auth.$authWithPassword({
email: user.email,
password: user.password
}); //authWithPassword
}, //login
register: function(user) {
return auth.$createUser({
email: user.email,
password: user.password
}).then(function(regUser) {
var ref = new Firebase(FIREBASE_URL+'users');
var firebaseUsers = $firebase(ref);
var userInfo = {
date : Firebase.ServerValue.TIMESTAMP,
regUser : regUser.uid,
firstname: user.firstname,
lastname : user.lastname,
email: user.email
}; //user info
firebaseUsers.child(regUser.uid).set(userInfo);
}); //promise
} //register
}; //myObject
return myObject;
}); //myApp Factory
index.html
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Angular Data</title>
<meta name="viewport" content="width=device-width, user-scalable=no">
<link rel="stylesheet" href="css/style.css">
<script src="js/lib/angular/angular.min.js"></script>
<script src="js/lib/angular/angular-animate.min.js"></script>
<script src="js/lib/angular/angular-route.min.js"></script>
<script src="https://cdn.firebase.com/js/client/2.2.2/firebase.js"></script>
<script src="https://cdn.firebase.com/libs/angularfire/1.0.0/angularfire.min.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/meetings.js"></script>
<script src="js/controllers/registration.js"></script>
<script src="js/services/authentication.js"></script>
</head>
<body>
<header>
<nav class="cf" ng-include="'views/nav.html'">
</nav>
</header>
<div class="page">
<div class="userinfo" ng-show="currentUser">
<span class="userinfo">Hi {{ currentUser.firstname }}</span>
</div>
<main class="cf" ng-view>
</main>
</div>
</body>
</html>
尽管Firebase有用户/
simplelogin:11
date:
email:
firstname:
lastname:
regUser:
我只能从authUser和currentUser访问uid。
所以我可以将currentUser.uid传递给视图,但不能传递给currentUser.firstname!我是不是患了大脑融化症!我缺少$firebaseObject,如下所示:
if(authUser) {
var ref = new Firebase(FIREBASE_URL + '/users/' + authUser.uid);
var user = $firebaseObject(ref);
$rootScope.currentUser = user;
}else{
$rootScope.currentUser = '';
}
作为Firebase的新手,发现他们最近用重命名的$firebaseObject服务替换了$asObject。我删除了$asObject而没有替换$firebaseObject。
所以现在它起作用了,我很高兴 我从未使用过FireBase,但从简要查看他们的文档来看,您必须实际设计用户对象类型,告诉FireBase它们是什么,然后自己插入它们
if(authUser) {
var ref = new Firebase(FIREBASE_URL + '/users/' + authUser.uid);
var user = $firebaseObject(ref);
$rootScope.currentUser = user;
}else{
$rootScope.currentUser = '';
}