将以下对象绑定到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
的值。
答案 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*/;