angularJS:内联过滤器不能用于ng-repeat

时间:2018-06-05 20:42:56

标签: angularjs angularjs-ng-repeat

我正在使用angularJS v1.2.14。

这是我的界面。 ng-repeat正确显示信息,但过滤器不起作用。换句话说,当我在输入框中输入文本时,这根本不会过滤ng-repeat数据。

<input ng-model="searchbox" type="text" />

<section ng-repeat="tienda in datosTiendas | filter:searchbox | limitTo:1">
    <span>ven: {{tienda.ventaIndividualRedondeadaParaDisplay}}</span>
    <span>cum: {{tienda.cumplimientoIndividualParaDisplay}}</span>
    <span>CO: {{tienda.CO}}</span>  
</section>

这是我的模特:

$scope.datosTiendas={};
$scope.datosTiendas={"0":{"tienda":"DE LA CUESTA-BUCARAMANGA","venta":"134960","CO":64,"nombre":"DELACUESTA","coordinadorID":5,"cuota":874000,"cumplimiento":0.15441647597254005,"anoPasado":504600,"crecimiento":-0.7325406262386048,"ventaIndividualRedondeadaParaDisplay":"135","puestoEnVentasTiendas":38,"cumplimientoIndividualParaDisplay":15,"nombreTiendaParaDisplay":"DELACUESTA","crecimientoIndividualParaDisplay":-73,"crecimientoIndividualPesosRedondeadaParaDisplay":"-$370","cuotaIndividualRedondeadaParaDisplay":"$874"},"1":{"tienda":"AZUCAR PALMIRA UNICENTRO","venta":"179820","CO":59,"nombre":"UNICE PALM","coordinadorID":3,"cuota":874000,"cumplimiento":0.2057437070938215,"anoPasado":999003,"crecimiento":-0.8200005405389174,"ventaIndividualRedondeadaParaDisplay":"180","puestoEnVentasTiendas":37,"cumplimientoIndividualParaDisplay":20,"nombreTiendaParaDisplay":"UNICE PALM","crecimientoIndividualParaDisplay":-82,"crecimientoIndividualPesosRedondeadaParaDisplay":"-$819","cuotaIndividualRedondeadaParaDisplay":"$874"},"2":{"tienda":"NUESTRO MONTERIA","venta":"233660","CO":69,"nombre":"NUES MONTE","coordinadorID":4,"cuota":1150000,"cumplimiento":0.20318260869565216,"anoPasado":"NULL","crecimiento":"NULL","ventaIndividualRedondeadaParaDisplay":"234","puestoEnVentasTiendas":36,"cumplimientoIndividualParaDisplay":20,"nombreTiendaParaDisplay":"NUES MONTE","crecimientoIndividualParaDisplay":null,"crecimientoIndividualPesosRedondeadaParaDisplay":null,"cuotaIndividualRedondeadaParaDisplay":"$1.150"},"3":{"tienda":"AZUCAR FLORENCIA CAQUETA","venta":"239730","CO":58,"nombre":"FLORENCIA","coordinadorID":1,"cuota":943000,"cumplimiento":0.254220572640509,"anoPasado":984900,"crecimiento":-0.7565945781297594,"ventaIndividualRedondeadaParaDisplay":"240","puestoEnVentasTiendas":35,"cumplimientoIndividualParaDisplay":25,"nombreTiendaParaDisplay":"FLORENCIA","crecimientoIndividualParaDisplay":-75,"crecimientoIndividualPesosRedondeadaParaDisplay":"-$745","cuotaIndividualRedondeadaParaDisplay":"$943"},"4":{"tienda":"CALI CR 7","venta":"242920","CO":70,"nombre":"OUTLET K7","coordinadorID":3,"cuota":1023000,"cumplimiento":0.23745845552297165,"anoPasado":"NULL","crecimiento":"NULL","ventaIndividualRedondeadaParaDisplay":"243","puestoEnVentasTiendas":34,"cumplimientoIndividualParaDisplay":23,"nombreTiendaParaDisplay":"OUTLET K7","crecimientoIndividualParaDisplay":null,"crecimientoIndividualPesosRedondeadaParaDisplay":null,"cuotaIndividualRedondeadaParaDisplay":"$1.023"},"5":{"tienda":"AZUCAR SOLEDAD ATLANTICO","venta":"294950","CO":57,"nombre":"SOLEDAD","coordinadorID":4,"cuota":1357000,"cumplimiento":0.21735445836403833,"anoPasado":232899,"crecimiento":0.26642879531470726,"ventaIndividualRedondeadaParaDisplay":"295","puestoEnVentasTiendas":33,"cumplimientoIndividualParaDisplay":21,"nombreTiendaParaDisplay":"SOLEDAD","crecimientoIndividualParaDisplay":"+26","crecimientoIndividualPesosRedondeadaParaDisplay":"+$62","cuotaIndividualRedondeadaParaDisplay":"$1.357"}};

这是一个jsFiddle,显示了确切的问题:https://jsfiddle.net/0ptsuzwo/

2 个答案:

答案 0 :(得分:0)

您正尝试使用字符串过滤对象。您需要将要过滤的属性添加到filter的{​​{1}}部分。您可以选择您想要的任何属性,对于此示例,我选择ng-repeat

ventaIndividualRedondeadaParaDisplay

答案 1 :(得分:0)

ng-repeat是针对一个对象数组而不是对象的对象。

我将我的模型从一个对象转换为一个数组并且它有效:

$scope.datosTiendas=Object.values($scope.datosTiendas)

感谢您关于如何将对象的对象转换为对象数组的答案: How to convert object containing Objects into array of objects