2017-03-10 51 views
1

需要一些帮助。我继承了这段代码,并且我不是100%需要完成的工作,但我需要将默认选定项设置为第一个组/第一个选项,而不是data-placeholder。 我尝试过使用ng-init,但我无法使其正常工作。 如何用下面的代码实现这个功能?Select2默认从optgroup中选择

<div ng-repeat='searchField in searchFields.device'> 
    <select data-placeholder='Search Field' ng-model='searchField[0]' ui-select2> 
     <option value=''></option> 
     <optgroup label='FooGroup1'> 
      <option value='foo_option1'>foo_option1</option> 
     </optgroup> 
     <optgroup label='FooGroup2'> 
      <option value='foo_option1'>foo_option1</option> 
      <option value='foo_option1'>foo_option1</option> 
     </optgroup> 
    </select> 
.... 

ACTUAL HAML

%div(ng-repeat="searchField in searchFields.message") 
    %select(ng-model="searchField[0]" ui-select2 data-placeholder="Search Field" ng-init="searchField[0] = ") 
    %option(value="") 
    - devices_optgroup.each do |group, attrs| 
     %optgroup{label: group} 
     - attrs.each do |attr, label| 
      %option(value="#{attr}")= label 

回答

0

<option>元件允许可选selected属性。从MDN

选择 如果存在,此布尔属性指示该选项被初始选择。如果该元素是未设置多个属性的元素的后代,则此元素中只有一个元素可能具有所选属性。

所以,如果你要选择的第一<optgroup>的第一个元素,你可以做这样的事情:

<select data-placeholder='Search Field' ng-model='searchField[0]' ui-select2> 
    <option value=''></option> 
    <optgroup label='FooGroup1'> 
     <option value='foo_option1' selected>foo_option1</option> 
    </optgroup> 
    <optgroup label='FooGroup2'> 
     <option value='foo_option1'>foo_option1</option> 
     <option value='foo_option1'>foo_option1</option> 
    </optgroup> 
</select> 
+0

这将如何写在HAML,因为选项在建立或之后如何定义我可以指定'selected'的索引吗 – Awatatah

+0

你可以尝试这样的:'%option {:value => attr,:selected => label ==“foo_option1”} = label' – smonusbonus