如何在 select 元素上使用 Angular ng-options?
How to use Angular ng-options other than on a select element?
官方文档说我们可以在任何元素上使用 ng-options,而不仅仅是 select。我想我们可以这样做,这样我们就可以使 selection UI 看起来更好(特别是如果我们想要显示缩略图或提供比仅来自一个 属性 的更多信息)。
我试过了,没有成功。我的对象是具有两个属性的播放器 - 名称和编号:
<div ng-model="selectedPlayer" ng-options="player.name for player in players">
{{player.name}} - his number is {{player.number}}
</div>
我已将列表加载到控制器中,为简洁起见,我不需要显示它。这是行不通的。它只会显示“{{player.name}} - 他的号码是{{player.number}}”字面意思,只显示一次。
我认为我的标记有误或遗漏了某些内容。问题是,一个 select 元素实际上有选项,我相信 ng-options 将数据渲染到这些选项中。我的 div 没有那个,所以我不知道该怎么办。
"ugly" 替代方法是使用 ng-repeat 并将项目连接到控制器的函数 (onSelect(player)):
<div ng-repeat="player in players">
{{player.name}} - his number is {{player.number}} <span ng-click="onSelect(player)" />
</div>
我认为那时我不需要 ng-model,因为它将由控制器的 onSelect(player) 函数处理。不过我不想这样做!
那么,除了 select 元素之外,我们如何使用 ng-options - 而不会干扰控制器来执行 selected 项目绑定?
文档不正确,请参阅 https://github.com/angular/angular.js/blob/v1.4.0-rc.1/src/ng/directive/ngOptions.js#L363
Select 是 ng-options 所必需的。 ng-repeat 是您任务的正确解决方案。
官方文档说我们可以在任何元素上使用 ng-options,而不仅仅是 select。我想我们可以这样做,这样我们就可以使 selection UI 看起来更好(特别是如果我们想要显示缩略图或提供比仅来自一个 属性 的更多信息)。
我试过了,没有成功。我的对象是具有两个属性的播放器 - 名称和编号:
<div ng-model="selectedPlayer" ng-options="player.name for player in players">
{{player.name}} - his number is {{player.number}}
</div>
我已将列表加载到控制器中,为简洁起见,我不需要显示它。这是行不通的。它只会显示“{{player.name}} - 他的号码是{{player.number}}”字面意思,只显示一次。
我认为我的标记有误或遗漏了某些内容。问题是,一个 select 元素实际上有选项,我相信 ng-options 将数据渲染到这些选项中。我的 div 没有那个,所以我不知道该怎么办。
"ugly" 替代方法是使用 ng-repeat 并将项目连接到控制器的函数 (onSelect(player)):
<div ng-repeat="player in players">
{{player.name}} - his number is {{player.number}} <span ng-click="onSelect(player)" />
</div>
我认为那时我不需要 ng-model,因为它将由控制器的 onSelect(player) 函数处理。不过我不想这样做!
那么,除了 select 元素之外,我们如何使用 ng-options - 而不会干扰控制器来执行 selected 项目绑定?
文档不正确,请参阅 https://github.com/angular/angular.js/blob/v1.4.0-rc.1/src/ng/directive/ngOptions.js#L363
Select 是 ng-options 所必需的。 ng-repeat 是您任务的正确解决方案。