gpt4 book ai didi

javascript - 如何缓存 AngularJS ui-router 解析?

转载 作者:搜寻专家 更新时间:2023-11-01 04:08:52 25 4
gpt4 key购买 nike

不确定这是否是陈述问题的最佳方式,但我只希望在更改状态时解析运行一次。这是因为我有多个选项卡,我需要使用 AJAX 调用来获取模板的数据。所以当你点击一个选项卡时,我会将该信息存储到 $scope 中。但如果用户切换到另一个选项卡并返回,我不想继续进行此调用。

这就是我的 $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);
});
}
}
})

效果很好,但每次我切换标签页并返回时,它都会打另一个我不想要的电话。

我试图将 $scope 传递到 resolve 中,并在我进行 AJAX 调用之前检查 $scope.sources 是否存在,但这没有用。

最佳答案

我只是将它移动到一个服务中并缓存它并将它注入(inject)到解析中。

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);
});
}
}]);

现在决心做:-

 resolve: {
sources: function(SourceService) {
return SourceService.getSources();
}
}

或者只是在 resolve 本身中执行。

关于javascript - 如何缓存 AngularJS ui-router 解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com