[英]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.