首页 > 解决方案 > 将项目放入列表框中 - 在 Angularjs 中说“选择几个月后选择”是什么意思?

问题描述

https://angularjsaz.blogspot.com/2015/09/tutorial-28-angularjs-listbox-example.html

这表明:

<select style="width: 100%;" size="7" ng-model="currentItems" multiple  
         ng-multiple="true"  
         ng-options="opt as opt for opt in months">
</select>

这行得通。我想了解此语句的作用:opt as opt for opt in months

我也知道ng-repeat需要car in cars。为什么我不能在这里使用这样的东西?

就我而言,汽车是:

cars = [
    {make: 'Mazda', model: 'Miata', year: 2001},
    {make: 'Toyota', model: 'Prius', year: 2013},
]

在他们的情况下,月份是:

months = ['January','February','March','April']

标签: javascriptangularjslistbox

解决方案


根据文档,用于迭代数组数据源(如您的情况)的 ng-options 遵循以下模式:

选择作为数组标签

在哪里:

array : 一个表达式,其计算结果为要迭代的数组/对象。

value:局部变量,它将在迭代期间引用数组中的每个项目或对象的每个属性值。

label:此表达式的结果将是元素的标签。表达式很可能引用值变量(例如 value.propertyName)。

select:此表达式的结果将绑定到父元素的模型。如果未指定,则选择表达式将默认为值。

这主要用于将对象数组显示为选择列表中的选项,您希望在其中迭代的对象、标签和绑定到ng-model指令的值是 3 个不同的东西。在你的情况下,它们只是字符串,所以它基本上是在说stringSelectValue as stringLabel for stringItem in stringArray.

你可以通过说来简化这个例子ng-options="month for month in months"。如果未提供选择值,它也会使用标签值作为选择值。


推荐阅读