大家好,我正在尝试学习angularjs。

我已经选择了:

<label class="md-title" for="yachtId">Choose:</label>
 <select name="yachtId" id="yachtId" ng-options="selectedYacht.title for
    selectedYacht in yachtIds.availableOptions track by selectedYacht.id"
    ng-model="yachtIds.selectedOption" >
 </select>


我以json格式获取数据,如下所示:

$scope.yachtIds = {
availableOptions":[
     {"id":"2","title":"Name 1","maxCapacity":"5"},
     {"id":"7","title":"Name 2","maxCapacity":"8"}
 ]}


通过这一行,我得到用户选择的内容:

  selectedYacht = {{yachtIds.selectedOption}}


输出是这样的:selectedYacht = {“ id”:“ 7”,“ title”:“名称2”,“ maxCapacity”:“ 8”}

问题是,我试图使用md-select进行相同的选择,但是我不知道如何从用户的选择中打印所有内容。使用下面的代码,我仅得到名称。

<md-input-container flex="100">
  <label class="md-title" for="yachtId">Desired yacht:</label>
  <md-select ng-model="yachtIds.selectedOption"  name="yachtId" id="yachtId">
    <md-option ng-value="t.title" data-ng-repeat="t in yachtIds.availableOptions">
    {{ t.title }}
    </md-option>
  </md-select>
</md-input-container>


因此,输出结果是:selectedYacht = Name 2,但我希望它像上一个(selectedYacht = {“ id”:“ 7”,“ title”:“ Name 2”,“ maxCapacity”:“ 8” })。

有什么帮助吗?提前致谢。

最佳答案

将您的ng-value属性更改为t而不是t.title,然后添加trackBy模型选项:

<md-select ng-model="yachtIds.selectedOption" ng-model-options="{trackBy: '$value.id'}" name="yachtId" id="yachtId">
    <md-option ng-value="t" data-ng-repeat="t in yachtIds.availableOptions">
        {{ t.title }}
    </md-option>
</md-select>

09-25 17:51