在控制器之间传递变量的最佳方式
Best way to pass variables between controllers
我使用三个角度控制器:
**Controller1**
var fetchStudentDetails = function(){
var sDetails = myService.getList(//url-1 here);
sDetails.then(function (data) {
$scope.studentData = data.list;
var studentId = $scope.studentData[0].id;
});
}
fetchStudentDetails();
$scope.loadSecondLevel = function(){
$state.go('secondLevel');
}
**Controller2**
var fetchClassDetails = function(){
var sDetails = myService.getList(//url-2 here);
sDetails.then(function (data) {
$scope.classData = data.list;
var className = $scope.classData[0].name;
});
}
fetchClassDetails();
$scope.loadThirdLevel = function(){
$state.go('thirdLevel');
}
**Controller3**
$scope.putStudentDetails = function(){
// Here I need studentId,className for updateResource
var sDetails = myService.updateResource(//url-3 here);
sDetails.then(function (data) {
});
}
我必须将studentId(在Controller1中)、className(在Controller 2中)传递到Controller3中的函数中。我尝试使用$rootScope,它正在工作,但刷新页面时$rootScope值变为空。有人知道怎么做吗?
您的问题可以分为两个方面:
1.如何在控制器之间共享数据
在Angular 1.x中共享数据的最佳实践是使用factory
,将共享数据存储在工厂服务中,并向控制器公开访问方法:
factory('DetailData', function(myService, $q){
var _details;
function __getDetailData(){
return details
}
function __setDetailData(){
return myService.getList().then(function(data){
_details = data;
})
}
return {
getDetailData: __getDetailData,
setDetailData: __setDetailData
}
})
controller('myContrller', function(DetailData, $scope){
$scope.data = DetailData.getDetailData();
})
2.如何在刷新页面时保持数据,
您可以使用localStorage
在页面重新加载期间保持数据的持久性,许多工具&库可以实现这一点,例如ngStorage,或者您可以在每次启动angular应用程序时重置服务器中的数据:
//this would register work which would be performed
//when app finish loading and ready to start.
angular.module('app').run(function(DetailData){
DetailData.setDetailData();
})
取决于您正在解决的问题。有三种选择:
- 是将数据保存到
$rootScope
- 是使用
$scope.$emit
&CCD_ 5功能 - 使用自定义服务存储数据
如果你需要保存数据,那么它可以在整个页面重新加载后使用-localStorage。
嘿,这个问题在Angular JS中的控制器之间传递数据中得到了回答?
但简单的回应是服务。
相关文章:
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- 什么's是在javascript中迭代项的最佳方式
- 在node.js中编写单元测试的最佳方式是什么
- 在页面上记录数据并实现pushstate()的最佳方式
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 什么'这是加载jQuery的最佳方式
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 在网站上显示.mov作为加载屏幕的最佳方式
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 以角度渲染表中数据的最佳方式
- 删除集合中旧邮件/帖子的最佳方式
- 显示全屏Ajax加载程序的最佳方式
- PHP和JS中表单验证的最佳方式