在我的控制器中我有:
$scope.currentDiscount = new DiscountPrototype;
其中:
var DiscountPrototype = function(){
this.Id = 0;
this.PromoCode = null;
this.DiscountValue = null;
this.DiscountProducts = []
}
var DiscountProductPrototype = function(discountId,id,catId,catType,name) {
this.DiscountId = discountId;
this.ProductCategoryType = catType;
this.Name = name
}
然后我将一堆新的DiscountProductPrototype推送到$ scope.currentDiscount的DiscountProducts数组中。如果DiscountProduct具有ProductCategoryType =" C"它是一个类别,如果它是" P"它是一种产品。我的过滤器只打算在DiscountProduct数组中显示属于类别的对象。
<div ng-repeat="category in currentDiscount.DiscountProducts | filter:{category.ProductCategoryType: 'C' : true}"
class="productTile">
<p>{{category.Name}}</p>
</div>
使用上面的过滤器,我收到以下错误:
Syntax Error: Token '.' is at column {2} of the expression [{3}] starting at [{4}].
似乎有人说错了:
category.ProductCategoryType
如果我执行以下操作,则不会出现错误,但过滤器不执行任何操作。显示类别和产品。
<div ng-repeat="category in currentDiscount.DiscountProducts | filter: category.ProductCategoryType='C'"
class="productTile">
我是否需要创建自定义过滤器才能实现此类过滤?
答案 0 :(得分:1)
问题在于放置true
字。
必须在第二次冒号后放置true
。在第一次冒号之后,它应该只是Expression
。
试试以下......
<div ng-repeat="category in currentDiscount.DiscountProducts | filter:{ProductCategoryType: 'C'}: true"
class="productTile">
<p>{{category.Name}}</p>
</div>
有关过滤器的详细信息,请参阅:https://docs.angularjs.org/api/ng/filter/filter
答案 1 :(得分:1)
这应该有效:
<div ng-repeat="category in currentDiscount.DiscountProducts | filter:{ProductCategoryType: 'C'}"
class="productTile">
<p>{{category.Name}}</p>
</div>
&#13;