我目前正在开发一个 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 中(它可能在手机上不可用,但无论如何)。
问题是这样做我不是返回承诺而是返回资源,这迫使我在所有登录调用中传递回调。
有没有更好的办法 ?