角度服务设置和检索控制器之间的对象

Gen*_*ene 7 angularjs ionic-framework

我一直在尝试将一个服务对象从http post响应设置到控制器并从另一个控制器获取它.
我在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;
 }
Run Code Online (Sandbox Code Playgroud)

第二个控制器(获取对象并检索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;

 };
})
Run Code Online (Sandbox Code Playgroud)

这是从服务中检索的第二个控制器:

 .controller('unlock', function($scope, $timeout, dataFactory, $stateParams,StoreService) {

  function test(){
    console.log(StoreService.getData1());
Run Code Online (Sandbox Code Playgroud)

更新2 :(工作)Tomislav的掠夺者:http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p =preview

Tom*_*lav 11

@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;

  };
});
Run Code Online (Sandbox Code Playgroud)

然后在第一个控制器:

.controller('firstController',function(StoreService){
    .....
    StoreService.save(resp.data.data1,resp.data.data2);
 });
Run Code Online (Sandbox Code Playgroud)

在第二个控制器:

.controller('secondController',function(StoreService,$scope){
    $scope.data1 = StoreService.getData1();
    $scope.data2 = StoreService.getData2();
 });
Run Code Online (Sandbox Code Playgroud)


ati*_*der 7

使用setter和getter创建基本服务.将服务注入两个控制器.在一个控制器中使用setter,在另一个控制器中使用getter.