(离子)如何将变量(从服务器)共享到“搜索”相关页面?

时间:2015-12-17 07:01:04

标签: angularjs angularjs-scope ionic

这是我的任务:在路由到搜索页面或其子页面时从服务器获取搜索选择(例如:#/ search / option1)。问题是如何将选择共享到所有搜索相关页面,并且不请求服务器两次并且不将选择公开给根范围?

我不知道我描述的天气,不擅长。谢谢你的阅读。感谢任何提示,任何提示。

1 个答案:

答案 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)
  }
});


现在,您的工厂中有两个功能。

  1. requestValues()发出http请求并在本地保存结果
  2. getValues()获取本地保存的值而不发出http请求。
  3. 调用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中。由于简单,我没有这样做)