0

オプションのリストを含むダイアログウィンドウを開くことができるSPAを構築しています。ユーザーはオプションを選択できます。次に、そのオプションをアプリケーションのメインビューに添付する必要があります (例:ダイアログからAを選択し、フロントページの にAを添付し<ul>ます)。

ダイアログは独立しており、独自のモジュールとコントローラーがあります。

var AdviceList = angular.module('adviceList', []);

AdviceList.controller('AdviceListCtrl',function($scope,$http){
   //...
});

AdviceList.provider('$adviceList',function(){
  this.$get = function ($rootScope,$document,$compile,$http){

    function AdviceList(){
      // ...
    }

    AdviceList.prototype.open = function(){
        // ...
    }
})

選択したオプションのリストをアプリケーションの他の部分と共有する方法がわかりません。

私のアプローチは、配列を作成activeOptionsしてコントローラーのスコープにアタッチすることでしたが、その場合、プロバイダーには届きません。

AdviceList.controller('AdviceListCtrl',function($scope,$http){

    $scope.activeOptions = [];

    $scope.addAdvice = function(){

        $scope.activeOptions.push(); // push the chosen option

    }
 });


AdviceList.provider('$adviceList',function(){

this.$get = function ($rootScope,$document,$compile,$http){

    return{

        AdviceList: function(){
            return new AdviceList();
        },

        getActive: function(){
           // no access to the controllers scope here
        }

    }

  }
})

データアプリケーション全体を共有し、必要な機能を実装するための推奨されるベストプラクティスの方法は何ですか?

4

1 に答える 1

1

選択したオプションをサービス/プロバイダーに保存します。選択したオプションを保存するための API をサービスに提供します。AdviceListCtrl でその API/関数を呼び出して、オプションを保存します。

選択されたオプションが何であるかを知る必要がある他のエンティティは、サービスを挿入し、サービスで API を呼び出してデータを取得できます。

于 2013-06-27T15:35:33.500 に答える