简体   繁体   English

错误:[filter:notarray] ng-options中的期望数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM