0
<tr ng-repeat="materialOffer in Vm.materialoffers track by materialOffer.id" 
    ng-if="!materialOffer.containMaterial && $index >= startIndex && $index < endIndex"> 
</tr> 

У меня есть массив объектов с именем materialoffers. Каждый элемент массива представляет собой объект с свойством с именем containMaterial. Некоторые объекты имеют это свойство null, а другие - как объект. Я хотел бы отображать только те объекты, у которых есть объект в свойстве containMaterial. Я также использую $index, startIndex и endIndex для разбивки на страницы. Проблема, которую я имею, что $index отслеживает эти объекты, а также которые имеют containMaterial свойство null, например, массив, как это

[{ 
    "object1": { 
    containMaterial:obejct; 
    } 
}, { 
    "object2": { 
    containMaterial:obejct; 
    } 
}, { 
    "object3": { 
    containMaterial:Null; 
    } 
}, { 
    "object4": { 
    containMaterial:obejct; 
    } 
}] 

При перемещении object4, то $index будет 3 в то время как он должен быть 2, так как объект был скрыт ng-if.

+0

Можем ли мы увидеть, как вы будете отслеживать объекты – Olli

+0

вы хотите видеть, что внутри ? –

+0

Отслеживание страницы, чтобы предложить альтернативу – Olli

ответ

1

Почему бы не просто предварительно фильтровать заранее?

В вашем HTML:

<tr ng-repeat="materialOffer in Vm.filteredMaterialOffers() track by materialOffer.id" 
    ng-if="$index >= startIndex && $index < endIndex"> 
</tr> 

В ваших JS:

$scope.Vm.filteredMaterialOffers = function() { 
    Vm.materialoffers.filter(function (x) { 
     return x.containMaterial ; 
    }); 
}; 
+0

Да, на самом деле я думал об этом, но мне было просто интересно узнать, есть ли что-то альтернативное индексу $ index, которое отслеживает только те шаблоны в ng-repeat, которые показаны, а не скрыты ng-if hide or anything.Спасибо за вашу помощь –

+0

использовать встроенный фильтр 'limitTo' вместо' ng-if' – charlietfl

Смежные вопросы