1

我试图绑定$indexng-modelusingui-select指令但没有运气。

<ui-select ng-model="selected.m">
    <ui-select-match>
      <span ng-bind="$select.selected.name"></span>
    </ui-select-match>
    <ui-select-choices repeat="$index as choice in itemArray">
      <span ng-bind="choice + '' + $index"></span>
    </ui-select-choices>
  </ui-select>

在上面的模板itemArray中是一个月份名称数组,从下拉列表中选择任何月份后,我想将其绑定$indexng-model(ie. 'selected.m') 。

我已经准备好这个笨蛋了。

4

3 回答 3

0
<ui-select ng-model="vm.mySelectedCountry" title="Choose a country" ng-required="true"> 
        <ui-select-match placeholder="">{{vm.countries[vm.mySelectedCountry].countryName}}</ui-select-match>
        <ui-select-choices repeat="$index in vm.countries| filter: $select.search">
                <span ng-bind-html="vm.countries[$index].countryName | highlight: $select.search"></span>
        </ui-select-choices>
</ui-select>
于 2018-02-07T11:34:31.587 回答
0

如果你想要的只是 $index 那么你可以这样做:

<ui-select-choices repeat="$index in itemArray">
  <span ng-bind="itemArray[$index] + '' + $index"></span>
</ui-select-choices>

这会将 $select.selected 设置为 $index,这会更新您的 ng-model。

<pre> {{ selected }} </pre>

<ui-select ng-model="selected.m">
  <ui-select-match>
    <span>{{$select.selected}}</span>
  </ui-select-match>
  <ui-select-choices repeat="$index in itemArray">
    <span ng-bind="itemArray[$index] + '' + $index"></span>
  </ui-select-choices>
</ui-select>
于 2016-04-21T13:18:32.357 回答
0

我找到了解决方法:

  <ui-select ng-model="dummy"  ng-change="selected.m=itemArray.indexOf(dummy)">
    <ui-select-match>
      <span ng-bind="$select.selected.name"></span>
    </ui-select-match>
    <ui-select-choices repeat="choice in itemArray">
      <span ng-bind="choice + '/' + $index"></span>
    </ui-select-choices>
  </ui-select>

这是必要的,因为 $index 仅在表达式的 track by 或循环内可用。此外,AngularJS 是一个框架,它希望你操纵对象而不是像过去那样索引,这就是为什么我认为 ng-repeat/ng-options 不是为了做到这一点而设计的。

于 2016-04-20T12:56:02.737 回答