以ng重复过滤嵌套属性

时间:2015-01-09 19:09:35

标签: javascript angularjs

在我的控制器中我有:

$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">

我是否需要创建自定义过滤器才能实现此类过滤?

2 个答案:

答案 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)

这应该有效:

&#13;
&#13;
<div ng-repeat="category in currentDiscount.DiscountProducts | filter:{ProductCategoryType: 'C'}"
     class="productTile">
  <p>{{category.Name}}</p>
</div>
&#13;
&#13;
&#13;