繁体   English   中英

如何在angularjs中将数据从一个控制器发送到另一个

[英]How to send data from one controller to other in angularjs

如何使用angularjs将JSON数据从FirstCtrl发送到secondCtrl。

谁能帮我解决这个问题...

First.js:

angular.module('myApp')
    .controller('FirstCtrl', function ($scope) {

    //firstCtrl json data
       $.getJSON("sample.json", function (json) {
            console.log(json);
         });
    });

Second.js:

angular.module('myApp')
    .controller('secondCtrl', function ($scope) {

       //get the firstCtrl json data here
    });

我还将建议一种从控制器获取数据并向控制器返回数据的服务。

我们创建两个控制器,然后创建具有两个功能的服务:1.一个用于获取json数据2.一个用于返回json数据

像这样:

'use strict';
angular.module('myApp', [])

.controller('FirstCtrl', function( $scope, myService ){
 //we create or get the json object
 $scope.myjsonObj = {
      'animal':'cat',
      'feed':'frieskies',
      'color':'white',
      'sex':'male'
      };

      //pass the json object to the service
      myService.setJson($scope.myjsonObj);
})

.controller('SecondCtrl', function( $scope, myService ){
        //call service getJson() function to get the data
       $scope.myreturnedData = myService.getJson();
})
 .factory('myService', function(){
    var myjsonObj = null;//the object to hold our data
     return {
     getJson:function(){
       return myjsonObj;
     },
     setJson:function(value){
      myjsonObj = value;
     }
     }

});

HTML部分将是:

 <div ng-app="myApp">
        <div ng-controller="FirstCtrl">
          {{myjsonObj}}
        </div>
        <hr>
        <div ng-controller="SecondCtrl">
            {{myreturnedData.animal}}
            {{myreturnedData.feed}}
            {{myreturnedData.color}}
            {{myreturnedData.sex}}
        </div>

希望有帮助,祝你好运。

如果第二个控制器是嵌套的,则可以使用$ parent访问第一个控制器的范围。 您需要将json的值分配给$ scope,例如

$scope.json = my_json

然后在第二个控制器中,您可以说

$scope.json = $scope.$parent.json;

  var app = angular.module('myApp', []); app.controller('Ctrl1', function ($scope, $rootScope) { $scope.msg = 'World'; $rootScope.name = 'AngularJS'; }); app.controller('Ctrl2', function ($scope, $rootScope) { $scope.msg = 'Dot Net Tricks'; $scope.myName = $rootScope.name; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <!doctype html> <html> <body ng-app="myApp"> <div ng-controller="Ctrl1" style="border:2px solid blue; padding:5px"> Hello {{msg}}! <br /> Hello {{name}}! (rootScope) </div> <br /> <div ng-controller="Ctrl2" style="border:2px solid green; padding:5px"> Hello {{msg}}! <br /> Hey {{myName}}! <br /> Hi {{name}}! (rootScope) </div> </body> </html> 

您可以简单地提供一项具有两项功能的新服务:一项用于保存日期,一项用于提供日期,然后可以从任何地方访问此服务。 此外,例如,您可以将数据分配给$rootScope.someVar ,也可以通过这种方式从任何位置检索数据

只需使用$rootScope即可实现。 在您的第一个控制器中,分配$rootScope.json = $scope.json; 并且它将在整个应用程序中可用。 因此,您可以在特定应用程序上的任何位置访问$rootScope.json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM