我目前正在开发一个 Angular 前端,试图通过使用轻风或 restangular 来避免使事情过于复杂,但仍然可以正确编码。问题是我的代码在写了几行之后似乎比其他任何东西都臃肿。
关键是将用户保存在cookie中,并在有人登录时同时返回。
身份验证服务
var userResource = $resource('/users/:id');
var currentUser = $cookieStore.get("user") || {};
返回 {
当前用户:当前用户,
登录:函数(用户ID,类型,回调){
var thiz = 这个;
return userResource.save({id: userId}, {}, function(promise) {
promise.then(函数(结果){
thiz.currentUser = 结果.数据;
$cookieStore.put("用户", thiz.currentUser);
如果(回调){
回调(thiz.currentUser);
}
});
});
},
用户:函数(){
返回 userResource.query();
}
};
AuthCtrl 控制器
$scope.login = function(userId, type) {
Auth.login(userId, type, function(result) {
$scope.user = 结果;
});
};
Auth.login("someuser", 'basic', function(result) {
$scope.user = 结果;
});
$scope.users = Auth.users();
在另一个控制器中:
$scope.user = Auth.currentUser;
Snippets.query({user: $scope.user.id}, function(snippets) {
$scope.snippets = 片段;
});
我在服务中解决承诺的原因是因为我想保存 currentUser 并将其放在 cookieStore 中(它可能在手机上不可用,但无论如何)。
问题是这样做我不是返回承诺而是返回资源,这迫使我在所有登录调用中传递回调。
有没有更好的办法 ?