[英]Error: [filter:notarray] Expected array in ng-options
I have this object. 我有这个对象。
{
"0":{
"id":"7",
"nombre":"127",
"ciudad":"1"
},
"1":{
"id":"8",
"nombre":"cll 155",
"ciudad":"1"
},
"2":{
"id":"10",
"nombre":"Cra 30",
"ciudad":"1"
},
"3":{
"id":"30",
"nombre":"Repuestos",
"ciudad":"1"
},
"4":{
"id":"6",
"nombre":"Ibagué",
"ciudad":"3"
},
"5":{
"id":"9",
"nombre":"Villavicencio",
"ciudad":"2"
}
}
If I use it in a ng-options
it works perfect and the options are created. 如果我在ng-options
使用它,它会完美工作并创建选项。
<select name="user_dealer"
ng-model="formModel.user_dealer"
ng-options="dealer.nombre for dealer in concesionarios">
<option value="" ng-if="!formModel.user_dealer">Concesionario</option>
</select>
However when I add a filter: 但是,当我添加一个过滤器时:
<select name="user_dealer"
ng-model="formModel.user_dealer"
ng-options="dealer.nombre for dealer in concesionarios | filter: {ciudad:1}">
<option value="" ng-if="!formModel.user_dealer">Concesionario</option>
</select>
I get this error 我得到这个错误
Error: [filter:notarray] Expected array but received: {"0":{"id":"7","nombre":" 127","ciudad":"1"},"1":{"id":"8","nombre":"cll 155","ciudad":"1"},"2":{"id":"10","nombre":"Cra 30","ciudad":"1"},"3":{"id":"30","nombre":" Repuestos","ciudad":"1"},"4":{"id":"6","nombre":" Ibagué","ciudad":"3"},"5":{"id":"9","nombre":" Villavicencio","ciudad":"2"}} 错误:[过滤器:非数组]预期的数组但收到:{“ 0”:{“ id”:“ 7”,“ nombre”:“ 127”,“ ciudad”:“ 1”},“ 1”:{“ id “:” 8“,” nombre“:” cll 155“,” ciudad“:” 1“},” 2“:{” id“:” 10“,” nombre“:” Cra 30“,” ciudad“: “ 1”},“ 3”:{“ id”:“ 30”,“ nombre”:“ Repuestos”,“ ciudad”:“ 1”},“ 4”:{“ id”:“ 6”,“ nombre “:”Ibagué“,” ciudad“:” 3“},” 5“:{” id“:” 9“,” nombre“:” Villavicencio“,” ciudad“:” 2“}}
You are getting an error because ngFilter expects arrays, not objects. 您收到错误消息是因为ngFilter需要数组,而不是对象。 You can convert your concesionarios
object into an array and do the following with your HTML: 您可以将concesionarios
对象转换为数组,然后对HTML进行以下操作:
<select name="user_dealer"
ng-model="formModel.user_dealer"
ng-options="dealer as dealer.nombre in concesionarios | filter: {ciudad:1}">
<option value="" ng-if="!formModel.user_dealer">Concesionario</option>
</select>
Angular's documentation on filters states: Angular关于过滤器的文档指出:
Selects a subset of items from array and returns it as a new array. 从数组中选择项的子集,并将其作为新数组返回。
The concesionarios
object is not an array, hence filter
doesn't work. concesionarios
对象不是数组,因此filter
不起作用。 The concesionarios
object should look like this: concesionarios
对象应如下所示:
[
{
"id":"7",
"nombre":"127",
"ciudad":"1"
},
{
"id":"8",
"nombre":"cll 155",
"ciudad":"1"
},
{
"id":"10",
"nombre":"Cra 30",
"ciudad":"1"
},
... // other objects
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.