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

时间:2016-02-01 20:56:58

标签: javascript angularjs

我有这个对象。

{  
   "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”, “农布雷”:”   127" , “城”: “1”}, “1”:{ “ID”: “8”, “农布雷”:“CLL   155" , “城”: “1”}, “2”:{ “ID”: “10”, “农布雷”:“CRA   30" , “城”: “1”}, “3”:{ “ID”: “30”, “农布雷”:”   REPUESTOS “ ”城“: ”1“}, ”4“:{ ”ID“: ”6“, ”农布雷“:”   伊瓦格 “ ”城“: ”3“}, ”5“:{ ”ID“: ”9“, ”农布雷“:”   比亚维森西奥”, “城”: “2”}}

2 个答案:

答案 0 :(得分:1)

您收到错误,因为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>

答案 1 :(得分:1)

Angular's documentation on filters州:

  

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

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
]