选择对象的数据绑定

时间:2014-06-13 20:37:39

标签: angularjs

将以下对象绑定到select时,我发现了一种奇怪的行为:

REGIONSH = {0:"All Regions",1:"Europe",2:"North America"};

HTML(其中region是键的整数):

<select ng-model="REGIONSH[region]" ng-options="name for(key,name) in REGIONSH">

行为是选择了正确的选项正确填充列表,但是当我更改region变量时,所选条目变化正常,但突然原始和新选择都被命名为相同的东西。

例如,我会选择列表中的第二个元素,原始的元素将被重命名为&#34;北美&#34;来自&#34;所有地区&#34;。

所需的行为是选择我可以从对象中的每个值中选择的位置,同时将键作为option的值。

1 个答案:

答案 0 :(得分:1)

你拥有html的方式:

<select ng-model="REGIONSH[region]" ng-options="name for(key,name) in REGIONSH">

它会正确显示列表,但每当用户做出选择时,区域的name(&#34; name for(key,name)&#34;)将被绑定到{{1}的任何位置指向。

当用户选择第一个选项时,意味着ng-model将有效执行

ng-model

为索引REGIONSH[region] = /*name of the selected region*/; 的区域指定名称。

您可能想要的是region,因此值会分配给ng-model="region"变量,而不是选项。 (或者您想要存储选择的任何其他变量;可能不在region中)

然后您还需要REGIONSH,以便它仍然显示名称,但现在只要用户进行选择就会分配ng-options="key as name for (key, name) in REGIONSH。 (您可以使用的key种格式Read here

选择时的含义执行

ng-options

最终结果将是

region = /*key of the selected region*/;