2015-08-14 36 views
7

Tôi đã cố gắng thiết lập một đối tượng dịch vụ từ một phản hồi bài viết http đến một bộ điều khiển và nhận nó từ một bộ điều khiển khác.
Các hướng dẫn tôi thấy trong SO hoặc các trang web được tập trung hơn vào việc đưa nó từ đầu vào HTML đến một bộ điều khiển và một bộ điều khiển khác nhận được giá trị.Dịch vụ góc để thiết lập và lấy đối tượng giữa các bộ điều khiển

Tôi muốn tránh sử dụng rootscope và tôi mới dùng angular-js.

điều khiển đầu tiên (Để Đặt Data1 & Data2 trong một đối tượng)

.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; 
} 

điều khiển 2 (Để có được đối tượng và lấy data1 và data2)

Một số gợi ý sẽ được đánh giá sâu sắc!

Update1: (Lưu Chức năng hoạt động nhưng Nhận Chức năng Trả 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; 

}; 
}) 

Đây là điều khiển 2 mà lấy từ dịch vụ:

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

    function test(){ 
    console.log(StoreService.getData1()); 

Cập nhật 2: (làm việc) Người plunker của Tomislav: http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p=preview

+0

phục vụ của bạn, bạn tuyên bố data1 như mảng. Vui lòng sử dụng var data1 = {} nếu bạn chỉ muốn một đối tượng lưu trong biến tht. – Tomislav

+0

Xin chào, cả hai trả về trống rỗng với {} trả lại cho tôi 'Đối tượng {}' – Gene

+1

Tôi đã thực hiện plunker cho bạn: http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p=preview – Tomislav

Trả lời

11

@atinder answer là cách để thực hiện. Dưới đây là ví dụ về các dịch vụ:

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; 

    }; 
}); 

Sau đó, trong bộ điều khiển đầu tiên:

.controller('firstController',function(StoreService){ 
    ..... 
    StoreService.save(resp.data.data1,resp.data.data2); 
}); 

Trong điều khiển thứ hai:

.controller('secondController',function(StoreService,$scope){ 
    $scope.data1 = StoreService.getData1(); 
    $scope.data2 = StoreService.getData2(); 
}); 
+0

Xin chào, tôi giả sử "StoreService.save ()"? Như resp.data của tôi trả lại cho tôi giá trị. Và tôi không hiểu tại sao lại có nhu cầu '$ http.get ('/your/api ')' vì tôi không cần bất kỳ yêu cầu http nào trong dịch vụ. Cảm ơn! – Gene

+0

Tôi đã chỉnh sửa câu trả lời của mình. – Tomislav

+0

Xin chào, Cảm ơn! Lemme lấy lại cho bạn trong một thời gian! – Gene

7

tạo một dịch vụ cơ bản với người định cư và getters. Tiêm dịch vụ vào cả hai bộ điều khiển. sử dụng setter trong một bộ điều khiển và getter trong bộ điều khiển khác.

+0

Xin chào, Cảm ơn bạn đã trả lời. Nhìn vào http://jsfiddle.net/rahilwazir/sk3e9e90/1/ này, từ dịch vụ nó thiết lập trạng thái, làm thế nào để tôi thay đổi nó thành một đối tượng? – Gene

Các vấn đề liên quan