【发布时间】:2016-04-01 13:25:23
【问题描述】:
授权控制:
.controller('AuthCtrl', function(Users, Auth, $state) {
var authCtrl = this;
authCtrl.user = {
name: '',
email: '',
password: ''
};
authCtrl.login = function() {
Auth.$authWithPassword(authCtrl.user).then(function(auth) {
$state.go('home');
console.log('Logged in');
}, function(error) {
authCtrl.error = error;
});
};
authCtrl.register = function() {
Auth.$createUser(authCtrl.user).then(function(user) {
Auth.$authWithPassword(authCtrl.user).then(function(authData) {
Users.saveUser({
uid: authData.uid,
name: authCtrl.user.name,
mail: authData.password.email
});
console.log('Registered');
$state.go('home');
});
}, function(error) {
authCtrl.error = error;
});
};
});
路由器:
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('login', {
url: '/login',
controller: 'AuthCtrl as authCtrl',
templateUrl: 'auth/login.html'
})
.state('register', {
url: '/register',
controller: 'AuthCtrl as authCtrl',
templateUrl: 'auth/register.html'
})
导致麻烦的HTML:
<li ng-show="homeCtrl.isLoggedIn()" ng-class="{active: homeCtrl.isSelected(5)}">
<a href ng-click="homeCtrl.selectTab(5, 'profile')">{{ homeCtrl.getUserName(homeCtrl.currentUser.uid) }}</a>
</li>
Home Ctrl 与用户使用的方法基本相同:
homeCtrl.getUserName = Users.getUserName;
getUserName: function(uid) {
if (users.$getRecord(uid)) {
return users.$getRecord(uid).name;
}
},
您好,我正在使用 Firebase + Angular 创建自己的应用。 问题如下:当我注册(或登录)时,我的用户名不会在页面上自动刷新,我必须手动重新加载。我想这是关于解决注册和登录状态的承诺,但我不知道要添加什么。谁能帮我解决这个问题,我只是卡住了。
另外一件事 - 用户名出现需要几秒钟,它不会立即发生。猜猜是关于表达式中的函数调用,但我不知道如何重构它。
任何帮助将不胜感激!
【问题讨论】:
-
取回用户数据后能否添加
$scope.$digest()或$scope.$applyAsync()?它闻起来像 $digest 循环没有运行,因为 angular 不知道变化,即在 angular 之外完成的变化 -
你是什么意思?
标签: javascript angularjs firebase