如何一次处理所有数据并应用于 angularjs 中的控制器

How to all data at once and apply to controllers in angularjs

我想通过AJAX($http)请求一次获取所有数据并应用到所有控制器

我从 google 中选择了这段代码,它表明我必须为每个控制器发出请求,我可以一次获取数据 ajax 根据我试过的控制器调用和应用对象在 angular 但它不起作用请帮我找到一种方法,我可以立即获取数据并更新控制器中的所有数据

<p>Today's welcome message is:</p>
<h1>{{myWelcome}}</h1>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("welcome.htm")
    .then(function(response) {
        $scope.myWelcome = response.data;
    });
});
</script>

谢谢。

您可以改用$rootScope

<p>Today's welcome message is:</p>
<h1>{{myWelcome}}</h1>

<script>
var app = angular.module('myApp', []);



   app.run(function($rootScope){
       $http.get("welcome.htm")
        .then(function(response) {
            $rootScope.myWelcome = response.data;
        });
   })

  app.controller('myCtrl', function($scope, $http) {
      // Here watch for scope

     $scope.$watch("myWelcome", function(value){
         console.log(value)
     })

  });
</script>

根据您的评论,这将有效:

mainApp.controller('ABC',function($rootScope){

    $scope.somethingHappened = function(){
        $rootScope.$emit('valueChanged',your_data_to_be_passed)
    }

})


mainApp.controller('DEF',function($rootScope){

    $rootScope.$on('valueChanged',function(event,data){
        console.log(data) // you'll see your_data_to_be_passed
    })  

})

由于 controllers 不相关,您应该更喜欢 $rootScope 事件而不是 $scope.$broadcast$scope.$emit。您可以在在线教程中获得更多关于它们的详细信息

如果数据不是字符串,如果它的对象访问属性,如果它的数组访问索引,您可以使用 localStorage 和 JSON(字符串化和解析)方法。

<script>
 var app = angular.module('myApp', []);
  app.run(function($rootScope){
   $http.get("welcome.htm")
    .then(function(response) {
         localStorage.setItem('data', JSON.stringify(response));
    });
   })

app.controller('anotherCtrl', function($scope, $http) {

    $scope.myWelcome = JSON.parse(getItem('data'));
     /*or you can do this
    var full_data = JSON.parse(getItem('data'));
    (object)$scope.myWelcome = full_data.[some_property];
    (array of objects)$scope.myWelcome = full_data[index].[some_property];
    (just array) $scope.myWelcome = full_data[index]  
    */

 });
</script>