如何缓存AngularJS的ui-router解析
How to cache AngularJS ui-router resolve?
不确定这是否是陈述问题的最佳方式,但我只希望在更改状态时运行一次。这是因为我有多个选项卡,我需要使用AJAX调用来获取模板的数据。因此,当您单击选项卡时,我会将该信息存储到$作用域中。但是,如果用户切换到另一个选项卡并返回,我不想继续进行此调用。
这是我的$stateProvider现在的样子:
state('something', {
views: {
'filters.form': {
templateUrl: '<%= asset_path('my_path.html') %>',
controller: function($scope, sources){
$scope.sources = sources;
}
}
},
resolve: {
sources: function($http) {
return $http.get('/sources').success(function(data){
return JSON.parse(data.sources);
});
}
}
})
这工作得很好,但每次我切换tab并返回时,它都会发出另一个我不想要的调用
我试图将$scope传递到解析中,并检查是否$scope。源代码在我进行AJAX调用之前就存在了,但这不起作用。
我会把它移动到一个服务中,缓存它,然后注入到解析中。
app.service('SourceService',['$http', function(){
var _cachedPromise;
this.getSources = function(){
return _cachedPromise || _cachedPromise = $http.get('/sources').then(function(result){
//return result.data.sources //If the data is already an object which most possibly is just do
return JSON.parse(result.data.sources);
});
}
}]);
现在在解析do:-
resolve: {
sources: function(SourceService) {
return SourceService.getSources();
}
}
或者直接在解析本身中执行
相关文章:
- AngularJS - ui.router - 如何在动态添加它们后重定向到所需的状态
- angularjs+ui.router:指令控制器和链接函数之间的不同行为
- AngularJS : ui.router 不显示模板
- [AngularJS][UI Router]在视图中显示视图
- AngularJS ui-router:如何全局解析所有路由的典型数据
- 加载视图以查看问题 - AngularJS + ui.router
- Angularjs-ui-router,ui-view 不起作用
- Angularjs ui-router :条件嵌套名称视图
- AngularJS ui.router not rendering view [Node.js]
- AngularJS ui-router 中的 URL 路由参数
- AngularJS ui-router 使用 $state.params 和查询导航状态
- AngularJS UI-Router:渲染父部分与子部分
- Cordova/AngularJS UI-Router 包装外部站点,没有 iFrame
- 在一个视图和相同的url angularjs ui-router中加载来自不同状态的视图
- 使用 AngularJS ui-router 深度链接到 URL 的问题
- AngularJS ui-router - 设置菜单激活
- AngularJS ui-router
- 解决Angularjs ui-router问题
- 改变AngularJS UI-Router中的导航状态
- AngularJS ui-router,滚动到状态改变的下一步