2014-02-27 80 views
1
<ul ng-repeat="books in companyBookData.Bookparts" style="float: left"> 
    <li> 
     <select 
      name="Zone" 
      id="Zone" 
      ng-options=" ZoneType.Description for ZoneType in books.ZoneTypes" 
      ng-model="ZoneType" 
      ng-init="ZoneType=books.ZoneTypes[0]"> 
     </select> 
    </li> 
<ul> 

我有下拉菜单,它使用ng-repeat生成,如上所示。我将至少有4个下拉列表和最多100个下拉列表,并且我明白ng-repeat会在每次迭代中创建一个新的范围。我如何设置每个下拉菜单的默认值?我可以访问由ng-repeat生成的所有范围吗?我如何设置默认值?使用ng-repeat设置下拉菜单的默认设置

+1

尝试像ul ng-repeat =“booksBookData.Bookparts”中的ng-controller =“MyCtrl”,您可以参考每本书 – Whisher

+0

@Whisher非常感谢!对我来说工作得很好。 – GeekBoy

回答

0
<ul ng-repeat="books in companyBookData.Bookparts" style="float: left"> 
<li> 
    <select 
     name="Zone" 
     id="Zone" 
     ng-options=" ZoneType.Description for ZoneType in books.ZoneTypes" 
     ng-model="ZoneType" 
     ng-init="ZoneType=books.ZoneTypes[0]" 
     ng-controller="ZoneTypeController" 
     > 
    </select> 
</li> 

如Whisher建议我加入了NG-控制器指令并设置默认那里。 companyBookData.Bookparts的每次迭代都会调用此控制器。

0

试试这个

ng-init="ZoneType= ZoneType || books.ZoneTypes[0]"> 
0

您不能分配的NG-模型和NG选项相同的属性。您可以像使用ng-init一样仅使用定义一个新变量来存储选定对象。

<ul ng-repeat="books in companyBookData.Bookparts" style="float: left"> 
    <li ng-init="selectedZoneType=books.ZoneTypes[0]"> 
     <select 
      name="Zone" 
      ng-options=" ZoneType.Description for ZoneType in books.ZoneTypes" 
      ng-model="selectedZoneType"> 
     </select> 
    </li> 
<ul> 

不要在ng-repeat中定义ids,否则你会在html中得到重复的id。除非你使用$ index来使它们唯一。