(离子)如何将变量(从服务器)共享到 'search' 相关页面?
(ionic) How to share variables(from server) to 'search' relative pages?
这是我的任务:在路由到搜索页面或其子页面时从服务器获取搜索选择(例如:#/search/option1)。问题是如何将选择共享到所有搜索相关页面并且不请求服务器两次并且不将选择公开到根范围?
我不知道天气我描述清楚,不擅长。感谢您的阅读。感谢任何提示,任何提示。
您可以从服务器获取结果,然后在整个应用程序中重复使用该结果。
创建从服务器检索和存储值的工厂(或服务):
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 中。为了简单起见,我没有这样做)
这是我的任务:在路由到搜索页面或其子页面时从服务器获取搜索选择(例如:#/search/option1)。问题是如何将选择共享到所有搜索相关页面并且不请求服务器两次并且不将选择公开到根范围?
我不知道天气我描述清楚,不擅长。感谢您的阅读。感谢任何提示,任何提示。
您可以从服务器获取结果,然后在整个应用程序中重复使用该结果。
创建从服务器检索和存储值的工厂(或服务):
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 中。为了简单起见,我没有这样做)