http - 如何使用工厂/服务在 angularjs 中的多个 Controller 之间共享信息?

标签 http angularjs controllers

我试图在应用程序启动时加载 JSON,并在我的所有 Controller 之间传播数据。 我知道这不是很难做到,但我对我读过的所有文章/答案感到困惑,因为它们使用的语法与我不同,有人可以指导我如何做到这一点吗?

我目前正在让 Controller 制作 $http.get :

myApp = angular.module("myApp", [])

myApp.controller "HomeCtrl", ($scope, $http, $routeParams) ->
 $http.get('gethome.php').success (data) ->
  $scope.home = data

但是我必须在每个我想访问该数据的 Controller 中重复一遍

最佳答案

我会建议您将内存模式与服务一起使用,并在 Controller 中重用服务

请检查下面的示例代码

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

          app.service('cache', function ($http,$q) {
              var mycache={};
              return {
                  getdata: function (key) {
                      var deferred = $q.defer();
                      if (mycache[key]) {
                          deferred.resolve(mycache[key]);
                      }
                      else {
                          $http.get('TextFile.txt').then(function (data) {
                              mycache[key] = data.data;
                              deferred.resolve(mycache[key]);
                          });
                      }
                      return deferred.promise;
                  }
              }
          });


          app.controller('test', function ($scope, cache) {
              cache.getdata('cache').then(function (data) {
                  $scope.data = data;
              });
         });

           app.controller('test1', function ($scope, cache) {
              //since data is already cached now it will server the cached data
              cache.getdata('cache').then(function (data) {
                  $scope.data = data;
              });
         });

关于http - 如何使用工厂/服务在 angularjs 中的多个 Controller 之间共享信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17472097/

相关文章:

python - Django 测试 - 如何使用 JSON 发送 HTTP Post Multipart

java - Google blobstore 和 HTTP 206 响应

java - 在 JSP 中添加 Expires 或 Cache-Control header

javascript - 在 Angular Controller 中动态创建剑道网格列

http - Varnish 不 gzip html 页面

javascript - Angular,检查路径变量中的未定义 - Lambda 函数

javascript - 从 AngularJS 中的工厂/服务修改 $scope

JavaFX、FXML 和 Controller : switching scenes, 维护场景数据

ruby-on-rails - 无需通过路由即可测试 Controller

c# - LINQ 和可选参数