Javascript 迭代项使用ngOptions覆盖我的模型

Javascript 迭代项使用ngOptions覆盖我的模型,javascript,html,angularjs,Javascript,Html,Angularjs,我有这个 <select id="categoryListBox" data-ng-model="list" data-ng-change="updateCategory(item)" data-ng-options="item as item.categoryId[0].name+' : '+item.name for item in list" class='form-control' > <option value="" style="displ

我有这个

<select id="categoryListBox" 
data-ng-model="list" 
data-ng-change="updateCategory(item)"  
data-ng-options="item as item.categoryId[0].name+' : '+item.name for item in list"     
class='form-control' >
    <option value="" style="display:none;"> current category </option>
</select>
结果是

updateCategory点击

列表现在是[应该是什么项目]

未定义


html被包装在
ng隐藏
中,如果这很重要

您的
ng更改
与您的
ng选项
在不同的范围内。理论上,您基本上只需要传入模型,因为它将在
ng更改之前更新:

updateCategory(list)
但正如您所看到的,因为这是您的模型和ng选项,所以您可以覆盖列表。因此,您需要做的是让您的模型成为其他模型:

<select id="categoryListBox" 
   data-ng-model="selected_item"
   data-ng-change="updateCategory(selected_item)" 
> 

因此,概括地说,模型将被设置为所选项目的任何内容。如果将模型设置为与列表相同,则当您选择时,列表将成为所选项目的任何内容。可能不是你想要的。因此,将模型设置为与列表不同的变量,然后可以将模型传递给ng change函数

<select id="categoryListBox" 
   data-ng-model="selected_item"
   data-ng-change="updateCategory(selected_item)" 
>