2016-12-22 9 views
-2

私は角度jsとそのサービスには新しいので、この基本的な質問には気をつけてください。私が必要とするものを理解するために、コード内のコメントを読んでください。 angularサービス角度jsのコントローラー間で変数を渡す

.controller('ctrlr1', function($scope, myservice) { 
    var a = "abc"; 
    var b = 123; 
    myservice.myData = a; 
    myservice.myDataB = b; 
    }) 
    .controller('ctrl2', function ($scope, myservice) { 
    // how to get value of a 
    console.log(myservice.myData); 
    console.log(myservice.myDataB); 
    }) 
    .service('myservice', function() { 
    //what goes here? 
    this.myData = ''; 
    this.myDataB = 0; 
    }); 
+2

コントローラ間でデータを転送する方法は?これを見てくださいhttp://stackoverflow.com/questions/21919962/share-data-between-angularjs-controllers – Nitheesh

答えて

1

基本共有で

.controller('ctrlr1', function($scope, myservice) { 
    var a = "abc";  
}) 
.controller('ctrl2', function ($scope, myservice) { 
     // how to get value of a 
}) 
.service('myservice', function() { 
     //what goes here? 
}); 

ありがとうございますその効率的な方法のでMYSERVICEを使用することができますが、$ brodcastを使用しないでください。ここで

は一例です: -

var testModule = angular.module('testmodule', []); 

testModule 
    .controller('QuestionsStatusController1', 
    ['$rootScope', '$scope', 'myservice', 
    function ($rootScope, $scope, myservice) { 
     $scope.myservice = myservice; 
    }]); 

testModule 
    .controller('QuestionsStatusController2', 
    ['$rootScope', '$scope', 'myservice', 
    function ($rootScope, $scope, myservice) { 
     $scope.myservice = myservice; 
    }]); 

testModule 
    .service('myservice', function() { 
     this.xxx = "yyy"; 
    }); 
+0

'ctrlr1'に' var b = 123'と言う変数があるとどうなりますか?両方の変数を渡して2番目のコントローラにアクセスする方法 – sam

+0

'myData'で保存した最初の変数と同じですが、' myservice'' myDataB'の新しいプロパティを言うことができます。私は私の答えを編集して、それを見直してください。 –

+0

私はこのように 'myservice.myData = {va:a、vb:b}'を実行し、それを 'myservice.myData.va'または' myservice.myData.vb'として取得しました。 – sam

関連する問題