当前位置: 首页 > 知识库问答 >
问题:

使用AngularJS[duplicate]缓存JSON

微生永春
2023-03-14

我在控制器中加载JSON,更改重新加载JSON的路径。我想缓存它。

var sampleApp = angular.module('sampleApp', [
    'ngRoute',
    'sampleAppControllers',
]);

var sampleControllers = angular.module('sampleControllers', []);

sampleControllers.controller('PostsCtrl', ['$scope', '$http',
  function($scope, $http) {
    // Should be loaded only on app load
    $http.get('http://example.org/source.json').success(function(data) {
      $scope.posts = data;
    });

    $scope.orderProp = 'id';
  }]);

我试着用它。常量,但无法使其工作:

sampleApp.constant('myCache', ['$http', 
  function($http) {
    $http.get('http://example.org/source.json').success(function(data) {
      return data;
     });
  }]);

sampleControllers.controller('PostsCtrl', ['$scope', 'myCache',
  function($scope, myCache) {
    $scope.posts = myCache;    
    $scope.orderProp = 'id';
  }]);

我正在寻找一种在应用程序启动时加载JSON并在控制器中使用它的方法。

共有1个答案

魏鹤轩
2023-03-14

这就是Angular服务的用途——将数据加载到服务中而不是控制器中,并让控制器访问这些数据。服务在应用程序的生命周期中实例化一次,这正是您想要的。

 类似资料:
  • 我想缓存重方法的结果,但我出于某种原因,它不会存储在缓存中。 我尝试过使用Spring缓存,但它只在缓存整个api时起作用,我只需要缓存其中的一部分。 请求跟踪 启用缓存

  • 问题内容: 我是angularJS的新手,对缓存等有疑问。 我有一个包含两个步骤的向导,我希望能够单击“返回”和“下一步”,并在用户拥有表单时仍然填写表单。 在我的page1Partial中,我有这个: 当我转到下一页时,请清除复选框,这是因为再次调用了我对Java服务的RESful调用。如何缓存此响应? 从我的控制器,这每次都会打到我的REST Web服务。 我的服务 问题答案: 从1.1.2(

  • 问题内容: 我注意到,我会不时地对AngularJS应用程序中的模板之一进行更改,并且在运行时该更改将不可见。相反,我将不得不刷新应用程序,如果失败,请转到模板本身的路径并刷新它,以查看此更改。 防止像这样缓存这些模板的最佳方法是什么?理想情况下,我希望在当前使用Angular应用程序的过程中将它们缓存,但是下次我加载页面时,它们将检索最新和最出色的模板,而无需手动刷新。 我在使用ui-route

  • classpath : herosphp\cache\CacheFactory herophp的缓存是通过缓存工厂来管理的,CacheFactory 负责创建缓存,默认采用的是单例模式,也就是同一类型的缓存在应用中只会存再一个实例。 $cacher = CacheFactory::create('file', true); 我们为缓存工具定义了一个 ICache接口,它定义了以下接口方法: get

  • MiniFramework 支持三种缓存方式,分别是:Memcached、Redis 和 File(磁盘文件存储)。 Memcached $cache = \Mini\Cache::factory ('Memcache', array ( 'host' => 'localhost', //主机 'port' => 11211

  • 问题内容: 早上好,我在生产环境中有一个Web应用程序。用户每天都在使用它,当我发布更新时,用户回到该Web应用程序时,他会查看该Web应用程序的旧版本。他需要刷新浏览器以加载新版本。我怎么解决这个问题?我每次发布更新时(每周3-4次)都无法告诉数百名用户刷新页面。 问题答案: 一个简单的解决方案是将 代表时间戳或会话ID的查询字符串 添加到文件中。 例如,在我们的春季应用中,我们只需使用: 您也