当前位置: 首页 > 面试题库 >

如何在AngularJS的ng-options中设置value属性?

微生善
2023-03-14
问题内容

这似乎困扰着很多人(包括我)。

ng-options在AngularJS中使用指令填充<select>标签的选项时,我无法弄清楚如何为选项设置值。对此的文档确实不清楚-
至少对于像我这样的简单人而言。

我可以像这样轻松设置选项的文本:

ng-options="select p.text for p in resultOptions"

resultOptions例如,何时:

[
    {
        "value": 1,
        "text": "1st"
    },
    {
        "value": 2,
        "text": "2nd"
    }
]

设置选项值应该是(可能是)最简单的事情,但是到目前为止,我还是不明白。


问题答案:

参见
ngOptions

ngOptions(可选) – { comprehension_expression=} –以下形式之一:

对于数组数据源label for value in array select as label for value in array
label group by group for value in array select as label group by group for value in array track by trackexpr 对于对象数据源: label for (key , value) in object select as label for (key , value) in object label group by group for (key, value) in object select as label group by group for (key, value) in object

就您而言,应该是

array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];

<select ng-options="obj.value as obj.text for obj in array"></select>

更新资料

通过AngularJS的更新,现在可以为带有表达式valueselectelement 属性设置实际值track by

<select ng-options="obj.text for obj in array track by obj.value">
</select>

如何记住这些丑陋的东西

对于所有很难记住这种语法形式的人:我同意这不是最简单或最漂亮的语法。这种语法是Python列表理解的扩展版本,并且知道这有助于我非常轻松地记住该语法。就像这样:

Python代码:

my_list = [x**2 for x in [1, 2, 3, 4, 5]]
> [1, 4, 9, 16, 25]

# Let people to be a list of person instances
my_list2 = [person.name for person in people]
> my_list2 = ['Alice', 'Bob']

这实际上与上面列出的第一个语法相同。但是,<select>我们通常需要区分代码中的实际值和<select>元素中显示的文本(标签)。

就像,我们需要person.id代码,但是我们不想向id用户显示。我们想显示它的名字。同样,我们person.name对代码不感兴趣。有as关键字标记东西。这样就变成了这样:

person.id as person.name for person in people

或者,代替person.id我们可能需要person实例/引用本身。见下文:

person as person.name for person in people

对于JavaScript对象,也适用相同的方法。只要记住对象中的项目是用(key, value)成对解构的。



 类似资料:
  • 问题内容: 我可以在angularjs中使用默认值设置一个下拉列表, 如何使用来达到相同的效果?我胆战心惊, 但是没用。样品小提琴在这里 问题答案: 使用 为设定的默认值。 这是: 演示

  • 问题内容: angularjs模板中的和属性之间有什么区别?如果我在使用value属性的字段上使用它,则它正常工作,但是如果我将该属性更改为它,它将停止工作。 问题答案: 根据 文档 ,采用 “角表达式,其值将绑定到 元素的属性”。 因此,当您使用时,它将被解释为一个表达式,并且被绑定到(可能是)。 对于评估表达式很有用- 与设置硬编码值相比没有优势。但是,如果您想使用硬编码值,则必须将其包含在:

  • 问题内容: 运行AngularJS 1.4.0-rc.1,循环中的值包含变量的类型。 请参见以下代码: 这将生成如下的HTML代码: 为什么该值以变量类型(即?)为前缀?在AngularJS的早期版本(例如,当前稳定的1.3.15)的属性都充满了预期值,和。 那么,这是1.4.0-rc.1中的错误,还是现在需要以不同的方式处理这些情况? 问题答案: 显然,指令的处理方式有所变化。AngularJS

  • 本文向大家介绍详解使用angularjs的ng-options时如何设置默认值(初始值),包括了详解使用angularjs的ng-options时如何设置默认值(初始值)的使用技巧和注意事项,需要的朋友参考一下 这两天我用ng-options过程中遇到的初始值为空白的问题,记得去年就遇到过,怎么解决的忘记了,费了一阵子功夫之后解决了,想记下来,方便遇到同样问题的小伙伴当然还有自己。 1.场景: 就

  • 问题内容: 我想通过设置默认值我NG选项,等他们并没有在所有的工作。我的代码如下: angular HTML 这是我的Plunkr。 任何帮助,将不胜感激。 问题答案: 更新: 如果您想直接获得此答案中使用的参考,则为: 参考: AngularJS ng- options中的初始选择 这对我有用: 插件中有一个未初始化的错误,除此之外,Angular会将数组中的每个对象与数组中的每个元素进行比较。

  • 问题内容: 我刚刚升级到角度版本1.3.8。 当使用1.2.23版本时,我创建了一条指令来将数据表单视图转换为模型,反之亦然。 这是我的指令: }); 我在这里看到现在支持绑定中的getter和setter,但是我在任何地方 都 找不到如何同时使用getter 和 setter的方法。有什么办法吗?那就是-ng-model- options可以代替我的convert指令吗? 谢谢 问题答案: 该文