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

Error: [filter:notarray] Expected array in ng-options

本文关键字:数组 filter notarray 错误 ng-options      更新时间:2023-09-26

我有这个对象。

{  
   "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"
   }
}

如果我在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>

但是,当我添加过滤器时:

 <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>

我收到此错误

错误: [filter:notarray] 预期的数组,但收到: {"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"}}

您收到错误,因为 ngFilter 需要数组,而不是对象。您可以将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关于过滤器的文档指出:

从数组中选择项的子集,并将其作为新数组返回。

concesionarios对象不是数组,因此filter不起作用。concesionarios对象应如下所示:

[  
   {  
      "id":"7",
      "nombre":"127",
      "ciudad":"1"
   },
   {  
      "id":"8",
      "nombre":"cll 155",
      "ciudad":"1"
   },
   {  
      "id":"10",
      "nombre":"Cra 30",
      "ciudad":"1"
   },
... // other objects
]