2016-10-30 6 views
0

私は2回のドロップダウンを持っています。最初のドロップダウン値の選択に基づいて、2番目のドロップダウンが値を入力します。 2番目のドロップダウン値から値を選択すると、ng-changeイベントを呼び出してデータを取得し、テーブルに情報を表示します。これはうまくいきます。AngularJs:ドロップダウンでng-otonsのdefautの選択された値に対してng-changeイベントをトリガーする方法

しかし、私が必要とするのは、2番目に、デフォルト値を選択して、変更をトリガーして表にデータを表示する必要があるということです。

以下は、ドロップダウンのHTMLコードです。

<SELECT ng-model="selectedRS" ng-options="x as x.rsName for x in rsData" data-ng-change="getSPList(selectedRS)"> 

<SELECT ng-model="selectedSP" ng-options="x as x.displayName for x in spInfoList" ng-change="getSPInfo(selectedSP)"></SELECT> 

ここで私はgetSPInfo方法

から来る情報を表示するためのテーブルを持っている私のコントローラメソッドgetSPInfoは、事前に

$scope.getSPInfo = function(selectedSubproduct) { 
     $http({ 
        method: 'GET', 
        url: getSPInfo.web ',params: {rsId: selectedSP.rsId,spId : selectedSP.id}}). 
        success(function(data, status, headers, config) { 

         $scope.spInfo = data; 
        }). 
        error(function(data, status, headers, config) { 

        }); 

       } 

感謝です!

+0

関数getSPListでselectSPに値を代入します – Ulterior

+0

私のコントローラに$ scope.selectedSP = $ scope.spInfoList [0]が割り当てられているので、リストの最初の要素がデフォルトの選択名として表示されますが、トリガーしていません。 – vamshin

答えて

0

これは、手動でトリガーしなければならないものの1つです。コントローラが初期化されるまで値が監視されないため、ng-changeはそれをトリガしません。

$scope.getSPInfo(your_default_value); 

それとも何が起こっているかのコードを読んで誰にでも明らかであるように、私がやりたいことのOnInit機能でラップされています。あなたのコントローラで

あなたは手動で関数を呼び出すことができます。コントローラの初期化時に実行する必要がある他のコードもここに入れることができます。

function onInit(){ 
    $scope.getSPInfo(your_default_value); 
} 
onInit(); 

番目のオプションあなたは、ルーティングのためのUI-ルータを使用している場合は、状態定義オブジェクトの一部としてフォーカス取得時の機能でそれを置くことです。これは、その状態に入るときに関数を実行します。

+0

ありがとうCrhistian。私はhtmlでこの関数をどこで呼び出すべきですか? – vamshin

+0

私はこの例で表示しているようにコントローラで呼び出すことができます。関数onInitが宣言され、その直後に 'onInit()'が実行されます。 このonInit関数は最初のgetSpinInfo呼び出しを処理し、ng-changeは残りの部分を処理します –

関連する問題