我一直在尝试将一个服务对象从http post响应设置到控制器并从另一个控制器获取它.
我在SO或网站上看到的教程更侧重于从 HTML输入到控制器,另一个控制器获取值.
我在SO或网站上看到的教程更侧重于从 HTML输入到控制器,另一个控制器获取值.
我想避免使用rootscope,我是angular-js的新手.
第一个控制器(将Data1和Data2放在一个对象中)
- .controller('GetItem',function($scope,$http,$filter,$ionicPopup,$stateParams,$cordovasqlite,$cordovaDatePicker,dataFactory){
- ...
- console.log(resp.data);
- var data1= resp.data.data1;
- var data2= resp.data.data2;
- }
第二个控制器(获取对象并检索data1和data2)
一些指针将深表赞赏!
Update1 :(保存函数有效但Get函数返回EMPTY):
- .service('StoreService',function(){
- var data1=[]; //{} returns me an empty object
- this.save=function(data1){
- alert('DATA: '+ data1); //able to retrieve string
- this.data1=data1;
- };
- this.getData1=function(){
- alert('DATA1: '+ data1); //unable to get string
- return data1;
- };
- })
这是从服务中检索的第二个控制器:
- .controller('unlock',$timeout,dataFactory,StoreService) {
- function test(){
- console.log(StoreService.getData1());
更新2 :(工作)
托米斯拉夫的掠夺者:http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p=preview
@atinder答案是要走的路.以下是该服务的示例:
- app.service('StoreService',function(){
- var data1={};
- var data2={};
- this.save=function(data1,data2){
- this.data1=data1;
- this.data2=data2;
- };
- this.getData1=function(){
- return data1;
- };
- this.getData2=function(){
- return data2;
- };
- });
然后在第一个控制器:
- .controller('firstController',function(StoreService){
- .....
- StoreService.save(resp.data.data1,resp.data.data2);
- });
在第二个控制器:
- .controller('secondController',function(StoreService,$scope){
- $scope.data1 = StoreService.getData1();
- $scope.data2 = StoreService.getData2();
- });