2017-09-04 11 views
2

このマップはスコープ内にあります:$scope.graphEventsAndFieldsです。その内部のオブジェクトは次のようになります:{'event_name': ['field1', 'field2', ...]}(キーはイベント名で、その値はそのイベントのフィールドの配列です2つの選択入力をバインドし、それぞれの初期値を設定する方法

私は次のことを達成したいと思います:イベントのタイプを変更すると、それに応じて使用可能なフィールドが変更されます。また、デフォルトでは、イベント入力でマップの最初のキーが選択され、フィールド入力が選択されています。 。

フロントエンド:

0123。上記のイベントのための最初のフィールドは、これらの入力の下には、つもり今まで、私はこのコードを持っている2つの選択値を持つ関数を呼び出す必要があり、検索ボタンが表示されます

私は、(キー、値)繰り返しの場合、forループはデフォルトで値を追跡することがわかりました。だから、コントローラの私のコードは次のように見えた:

let firstKey = Object.keys($scope.graphEventsAndFields)[0]; 
$scope.selectedEventForSearch = $scope.graphEventsAndFields[firstKey]; 

しかし、これが唯一のイベント入力と、実際になりますselectedEventForSearch変数のデフォルト値を選択し、検索関数が呼び出される配列(キー)。私が"key for (key, value) in graphEventsAndFields track by key"のようなものを試してコントローラに$scope.selectedEventForSearch = firstKeyを設定しても動作しないと、デフォルト値は選択されません。

私には何が欠けていますか?オブジェクトのフォーマットを変更するか(複数のキーを持つオブジェクトの代わりにオブジェクトの配列を持つなど)。私はこの構造で説明したことを達成することはできますか? (好ましくは)。ありがとう!

+0

'firstKey'の値は何ですか?この行を親切に削除して 'ng-init ="を確認してください。selectedFieldForSearch = selectedEventForSearch [0] "' –

+0

最初のキーの値はどういう意味ですか?それは文字列です。 {"phishing":["cluster_id"、 "brands"]、 "auth":["ec_insert_date"、 "origin_ip"]}のようになります。 – Adi

+0

私は行を削除した、私はそれを忘れて、私はそれが動作すると思った。 – Adi

答えて

0

最後に、{eventName: 'evn', fields: [..., ..., ...]}のようなオブジェクトを持つ配列にデータセット形式を変更しました。

  <div class="form-horizontal"> 
       <div class="form-group" style="margin-bottom: 5px;"> 
        <label class="control-label col-xs-2" style="font-weight: normal;">Event: </label> 
        <div class="col-xs-10"> 
         <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched" 
           ng-options="obj.eventName for obj in graphEventsAndFields track by obj.eventName" 
           ng-model="selectedEventForSearch" ng-change="uiSelectIndex()"> 
         </select> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label col-xs-2" style="font-weight: normal;">Field: </label> 
        <div class="col-xs-10"> 
         <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched" 
           ng-options="field for field in selectedEventForSearch.fields" 
           ng-model="selectedFieldForSearch" ng-change="uiSelectIndex()"> 
         </select> 
        </div> 
       </div> 
      </div> 

とコントローラで:フロントエンドでは、コードは次のように変更された

$scope.selectedEventForSearch = $scope.graphEventsAndFields[0]; 
$scope.selectedFieldForSearch = $scope.selectedEventForSearch.fields[0]; 

は、今では動作します。

関連する問題