2016-08-06 4 views
0

私はこの数日間、この問題に多くの問題を抱えてきました。基本的には、データベースからのJSON戻りに基づいて一連のドロップダウンメニューを作成しようとしています。私は2日前にうまくやっていましたが、バックエンドコードを書き換えて別のフォーマットのJSONを返すだけでしたし、それを動作させるためにはたくさんのものを書き直さなければなりません。[ドロップダウンオプションの配列]のキーを持つオブジェクトに基づいて一連のドロップダウンメニューを作成しますか?

provisions: { 
    NAME OF DROPDOWN MENU1: [VALUE1, VALUE2, VALUE3, ..], 
    NAME OF DROPDOWN MENU2: [VALUE1, VALUE2, VALUE3, ..], 
    NAME OF DROPDOWN MENU3: [VALUE1, VALUE2, VALUE3, ..] 
} 

はそのJSONに基づいて、私は彼らの中に関連付けられている値を持つ3つのドロップダウンメニューを作成したい:私たちの名前JSONの形式はこれです。また、以前に保存したデータがサーバーに返されたものを表示できるようにしたいとします(たとえば、ユーザーが最初のドロップダウンで値2を選択してページを保存した場合、最初にページにアクセスするときに最初のドロップダウンに値2が表示されます)。ここで

は、私は現在、ドロップダウンメニューを試してみて、表示する必要があるHTML:

<form class="form-horizontal" ng-controller="GamePreferenceCtrl"> 
    <div ng-repeat="(name, section) in gameConfigs"> 
     <label ng-bind="name"></label> 
     <select class="form-control" ng-model="formData.settings[$index].value" ng-change="dropdownItemClicked(name, formData.settings[$index].value)"> 
      <option value="" disabled="disabled">---Please Select Option---</option> 
      <option ng-repeat="item in section" value="{{item.value}}" ng-bind="item.value"></option> 
     </select> 
    </div> 
    <div class="col-md-12" ng-include="gametemp"></div> 
    <div class="row"> 
     <div class="hr-line-dashed"></div> 
     <div class="text-center col-md-12 padding-15"> 
      <button class="btn btn-primary btn-lg" ng-click="saveGameSetting()" formnovalidate translate> 
       <i class='fa fa-circle-o-notch fa-spin' ng-if="showBusy"></i>&nbsp;Save 
      </button> 
     </div> 
    </div> 
</form> 

書かれている方法は、その上の適切な名前を持つドロップダウンメニューが表示されますが、ドロップダウン内のすべてのオプションがありますブランク。これに関する助けに感謝します。ありがとうございました。

+0

'provisions'は' gameConfigs'または何を意味しますか?また、便利な 'object' /' array'を投稿できるなら、素晴らしいでしょう。 – developer033

+0

はい、gameConfigsは自分のコントローラで作成するオブジェクトです。私のコントローラは、APIから返されるプロビジョニングオブジェクトがあるかどうかを確認するように設定されています。存在する場合は、プロビジョニングオブジェクトとまったく同じ構造のgameConfigsオブジェクトを作成します。 条項:{ food:["burger"、 "burrito"]、 飲み物:["コークス"、 "スプライト"のようなもののほかに、オブジェクト配列の構造をもっと明確にする方法はわかりません。 、 "山の露"]、 デザート:["sundae"] } – amacdonald

答えて

1

代わりにこれを試しましたか?

<option ng-repeat="item in section" value="{{item.value}}">{{item.value}}</option>

私はng-repeatが同じ要素上にあるので、それは良い仕事かもしれないのでng-bindは、item.valueへのアクセス権を持っていることはよく分かりません。

+0

ああ男。私はこれをあまりにも凝視して、私の脳が冷たくなったと思う。私は "{{item.value}}"の代わりに値を "{{item"}}に変更する必要があることを知りました。オプションがドロップダウンメニューに正しく表示されます。それを指摘していただきありがとうございます。 本当に難しい部分については、以前に保存した値をデフォルトでドロップダウンメニューに表示しています。私はまたgladyはどんな援助も取る。 – amacdonald

+0

@amacdonaldおそらく 'label =" item.value "'も動作します。しかし、ngRepeatの代わりに[** 'ngOptions' **](https://docs.angularjs.org/api/ng/directive/ngOptions)を使うことをお勧めします。 – developer033

+0

以前に保存した値はどのように保存されますか? 'ng-selected =" expression "を使用するのは難しいはずはありません。 –

関連する問題