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

angularJS: inline filter not working on 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":"-0","cuotaIndividualRedondeadaParaDisplay":"4"},"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":"-9","cuotaIndividualRedondeadaParaDisplay":"4"},"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":".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":"-5","cuotaIndividualRedondeadaParaDisplay":"3"},"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":".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":"+","cuotaIndividualRedondeadaParaDisplay":".357"}};

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

您正在尝试使用字符串过滤对象。您需要将要过滤的 属性 添加到 ng-repeatfilter 部分。你可以选择任何你想要的 属性,对于这个例子我选择 ventaIndividualRedondeadaParaDisplay.

<section ng-repeat="tienda in datosTiendas | filter: { ventaIndividualRedondeadaParaDisplay: searchbox } | limitTo:1">

ng-repeat 用于对象数组,而不是对象的对象。

我将我的模型从一个对象转换为一个数组并且它起作用了:

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

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