Chr*_*ris 8 javascript angularjs restangular angular-ui-router
的背景:
我正在使用ui-router来满足我的Angular页面路由需求.它到目前为止工作得很好,但是我遇到了一个问题.当我加载状态并解析我的用户对象.我使用restangular来调用数据库,它返回一个promise.一切都很好.如果我然后注销,并以另一个用户身份登录.然后导航回同一页面,显示上一个用户对象.
我发现的事情:
理论:
我试过的事情:
示例代码:
angular.module('services.user', [ ])
.factory('User', function(Restangular) {
return Restangular.service('users');
});
angular.module('settings.profile', [
'ui.router',
'services.user'
])
.config(function($stateProvider){
$stateProvider
.state('settings.profile',{
url: '/profile',
templateUrl: 'app/settings/profile/settings.profile.html',
controller: 'SettingsProfileCtrl',
authenticate: true,
resolve: {
user: function(User) {
var user = User.one('me').get()
return user;
}
}
});
})
.controller('SettingsProfileCtrl',
function($scope, $location, user, $http, apiUrl){
$scope.user = user;
}
Run Code Online (Sandbox Code Playgroud)
您的 REST API 参数不会更改,即它/users/me/在所有请求中保持不变。虽然浏览器可能不会缓存 - 这就是为什么您会在缓存中看到不同的正确信息。
您可以尝试配置 Restangular 来验证理论,方法如下:-
RestangularProvider.setDefaultHttpFields({cache: true});
Run Code Online (Sandbox Code Playgroud)
不过,我建议您本着 REST 风格的精神使用 URL 和 REST API,即使用类似...
/users/me/username
Run Code Online (Sandbox Code Playgroud)
username根据用户进行更改,或者如果您有一些限制,请执行以下操作
/users/me/?t=timestamp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1181 次 |
| 最近记录: |