我使用ng-repeat创建了一个下拉列表,如下所示:

            <div ng-show="editConfig" class="input-group" theme="bootstrap" style="">
                <label class="config-row-element ">Product Type</label>
      <select class="dropdown-menu scrollable-menu form-control config-dropdown"  style="" ng-model="event.etype" id="etype">
          <option value="" selected disabled>Select a Product</option>
          <option ng-repeat="etype in etypes" ng-value="etype[0]">{{etype[1]}}</option>
      </select>
        </div>


在控制器中,所有etypes都包含在一个数组中,其中每个etypes包含两项:一项是所选内容必须存储在后端的名称,另一项是显示名称。看起来像这样:

$scope.etypes = [['gif','GIF Booth'], ['photo','Photo Booth'], ['ipad', 'iPad'], ['video','Video Booth'], ['print','#Print']];

从用户的角度来看,当他们选择一个选项时,他们从Gif Booth,Photo Booth等中进行选择……但是,“ gif”,“ photo”等将绑定到ng-model event.etype。因此,现在当我尝试在不再编辑它们时显示选择时,将显示较丑的版本。

        <tr ng-hide="editConfig">
          <th>Product Type</th>
          <td style="overflow: hidden">{{event.etype}}</td>
        </tr>


有没有办法仅在HTML中轻松解决此问题?提前致谢。

最佳答案

您可以更改模型和值以采用整个数组字符串,然后在更改时将其转换为数组。

           <div class="input-group" theme="bootstrap" style="">
            <label class="config-row-element ">Product Type</label>
  <select class="dropdown-menu scrollable-menu form-control config-dropdown"  ng-model="etype" ng-change="showEvent(etype)">
      <option value="" selected disabled>Select a Product</option>
      <option ng-repeat="etype in etypes" ng-value="etype">{{etype[1]}}</option>
  </select>
    </div>


您选择了:{{selected}}

在你的js中:

 $scope.showEvent = function(e){
  var array = e.split(',')
  $scope.selected = array[1];
}


这是Plunker。我相信这就是您要寻找的。如果不是,请告诉我。也许我无法正确理解您的问题。

09-25 16:11