这是我的任务:在路由到搜索页面或其子页面时从服务器获取搜索选择(例如:#/ search / option1)。问题是如何将选择共享到所有搜索相关页面,并且不请求服务器两次并且不将选择公开给根范围?
我不知道我描述的天气,不擅长。谢谢你的阅读。感谢任何提示,任何提示。
答案 0 :(得分:1)
您可以从服务器获取结果,然后在整个应用程序中重用结果。
创建一个从服务器检索和存储值的工厂(或服务):
app.factory('DataService', function($http) {
var values;
var requestValues = function() {
$http.get("/api/getValues").then(
function(results){
values = results;
});
};
var getValues = function() {
return values;
};
return {
requestValues : requestValues, // this will make a http request and store the result
getValues: getValues // this will call the stored result (without making a http request)
}
});
现在,您的工厂中有两个功能。
requestValues()
发出http请求并在本地保存结果getValues()
获取本地保存的值而不发出http请求。调用requestValues()
后,您应该可以从任意位置调用getValues()
来获取值,而无需发出新的http请求。
myApp.controller('MyController', function ($scope, DataService) {
var init = function (){
DataService.requestValues(); // this will make the http request and store the result
$scope.items = DataService.getValues(); // this will get the result
};
var justGetValues = function(){
$scope.items = DataService.getValues(); // this will get the result (without making a http request)
};
});
现在,您只需在需要值时调用DataService.getValues()
即可。 (您可能希望将它们包装在promise中。由于简单,我没有这样做)