ng-repeat

时间:2015-07-20 14:10:06

标签: javascript angularjs

我有这样的情况:

<span ng-repeat="personNum  in unit.PricePerson">
      {{personNum}}
      <select ng-model="personNum" 
              ng-options="o as o for o in unit.PricePerson track by $index"></select>
</span>

unit.Price是数字数组,类似于[5,6,7,8,9],但每个select的值为9。我希望首先选择选择选项5,其他一个6等。另外,我注意到我无法使用鼠标更改选项。

生成5个选择框很好,每个选择内部还有5到9个数字作为选项生成。那些事情还可以。

3 个答案:

答案 0 :(得分:3)

您的部分问题可能是您选择的$ index跟踪...看看下面的plunker。另外,使用ng-init设置默认值。

http://plnkr.co/edit/2ZN1J61PD1Ev2OK1tezg

代码:

<span ng-repeat="personNum  in unit.PricePerson">
  <select ng-init="select[$index]=personNum" ng-model="select[$index]" ng-options="o as o for o in unit.PricePerson">

  </select>
</span>

正如@cyan建议的那样,我认为你还需要ng-model不是外部ng-repeat中的变量。

希望这有帮助。

答案 1 :(得分:0)

您的问题有点不清楚,但看起来您的ng-options配置存在问题。

通常不建议将选择轨道一起使用,因为它们不是设计为一起工作而且可能会产生意外结果。此外,您在ng-options中使用unit.PricePerson引用而不是单个迭代对象personNum

你应该有类似的东西:

<span ng-repeat="personNum in unit.PricePerson">
      {{personNum}}
      <select ng-model="personNum.selectedOption" 
              ng-options="o as o for o in unit.PricePerson">
      </select>
</span>

但是,如果没有看到您的javascript对象PricePerson,我无法确定您的ng-options配置应该是什么。查看ngOptions的AngularJS API。在Arguments部分中,为ng-options表达式提供了建议的模板。

答案 2 :(得分:-1)

尝试在选择内部使用不同的ng-model,而不是在ng-repeat中使用并启动它以获得所需的值:

<span ng-repeat="personNum  in unit.PricePerson">
      {{personNum}}
      <select ng-init="personNum1 = personNum" ng-model="personNum1" 
              ng-options="o as o for o in unit.PricePerson track by $index"></select>
</span>

所以,要完成这个。看看你使用相同的ng-model,这就是你不能用鼠标改变选项的原因。 在控制器中,创建一个选项数组:

    $scope.selectedOptions = ['5','6','7','8','9'];

然后在您的视图中使用它:

          <select ng-model="selectedOptions[$index]" 
              ng-options="o as o for o in unit.PricePerson track by $index">