2016-06-18 5 views
-2

現在、私はangularjsを使用するプロジェクトに取り組んでいます。モジュールの開発中に、私はサービスによって提供されたデータを2つの異なるコントローラで再利用する必要があると感じました。複数のサービスを複数回起動することなく、コントローラ間でangularjsのサービスを共有する

私はコントローラCtrl1angularjsサービスに当たってデータをフェッチしています。今すぐCtrl1を使用するビューView1.htmlには、別のビューView2.htmlにユーザーを誘導するリンクがあります。 View2.htmlはコントローラctrl2を使用します。

Ctrl1によって取得されたデータをCtrl2に再度渡したいと思います。私は$rootScopeを使ってこれを行ったが、私はそれが推奨されていないことを読んだ。私はまた、サービスを使用することを推奨する多くの記事を見てきましたが、それは2度データベースにヒットしたくありません。

お勧めします。

+0

サービスでMemoizeします。 –

答えて

0

Durgpalのように、サービスにデータを保存する必要があります。

例えば、サービスには2つのメドスがあります.fetchDataFromServer、getDataFromNgServiceです。 そして、目的のデータを保持しているサービスのvaribale

var dataHolder = { 
     desiredData: null 
    } 

    function fetchDataFromServer() { 
     $http.getMyData().then(function(yourData) { 
      dataHolder.desiredData = yourData 
     )} 
    } 

    function getDataFromNgService() { 
     return dataHolder; 
    } 

CTRL1:

service.fetchDataFromServer(); //fetch data from the server first 
    this.data= service.getDataFromNgService();//set the dataHolder on your ctrl 

CTRL2:

this.data = service.getDataFromNgService();//dont call the server, just set he dataHolder from the ng service on your ctrl 

とデータがを呼び出した後、あなたのhtmlにrechableありますサーバーは完了しました(双方向データバインディング)。

{{ctrl.data.desiredData }} 

希望があります。

関連する問題