如何使用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
});
答案 0 :(得分:4)
我还建议一个从控制器获取数据并从中返回数据的服务。
我们创建了两个控制器,然后我们创建了一个具有两个函数的服务: 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>
希望有所帮助,祝你好运。
答案 1 :(得分:1)
如果第二个控制器是嵌套的,则可以使用$ parent访问第一个控制器的范围。您需要将json的值分配给$ scope,例如
$scope.json = my_json
然后在第二个控制器中你可以说
$scope.json = $scope.$parent.json;
答案 2 :(得分:1)
relatedTarget
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;
});
答案 3 :(得分:0)
哟可以简单地创建一个新的服务,其中两个函数用于保存日期,另一个用于提供日期,然后可以从任何位置访问此服务。
此外,您可以将数据分配给$rootScope.someVar
,这样也可以从任何位置检索数据
答案 4 :(得分:0)
只需使用$rootScope
即可实现。
在您的第一个控制器中分配$rootScope.json = $scope.json;
,它将在整个应用程序中可用。因此,您可以在该特定应用上的任意位置访问$rootScope.json