我有以下指令(sales.jade
):
div(ng-repeat='product in products')
div.col-md-4
button.btn.btn-block.sell-button(id='{{product._id}}' role='button' ng-click='sell()'){{product.name}}
div(ng-repeat='p in supp track by $index | limitTo: 3')
p {{p.name}}
JS:
app.directive('sales', ['productServices', 'flash',
function(productServices, flash) {
var controller = function($scope, $timeout) {
productServices.getProducts()
.success(function(result) {
$scope.products = result.data
$scope.supp = []
})
.error(showErrorMessage(flash))
$scope.sell = function() {
that = this
$scope.supp.push(this.product)
$timeout(function() {
$('#' + that.product._id).blur()
}, 40)
}
}
return {
restrict: 'E',
templateUrl: '/partials/sales',
controller: controller
}
}
])
正如您所看到的,当单击一个按钮(与产品绑定)时,我将该产品添加到supp
数组中,并通过{显示supp
数组的内容{1}}指令。我的问题是,在ngRepeat
数组添加元素时,limitTo
过滤器并未应用。因此,supp
会显示ngRepeat
中的所有项目。如何只显示supp
数组的最后3个元素,即使我向其中添加了一些新项目?
答案 0 :(得分:1)
如果您需要显示最后3个项目,则需要按值使用负跟踪。此外,如果您想应用限制然后在限制过滤器上设置跟踪,基本上您希望对实际限制(limitTo
)而不是整个列表(``supp`)应用跟踪。这就是为什么它显示列表中的所有元素。即: -
<div ng-repeat="p in supp | limitTo: -3 track by $index">
或使用您的模板
div(ng-repeat='p in supp | limitTo: -3 track by $index')
<强> Plnkr 强>