2015-01-09 140 views
0

在我的控制,我有:過濾嵌套屬性在ngRepeat

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

然後我推了一堆新DiscountProductPrototypes到$ 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

'過濾器:{」 ProductCategoryType':'C':true}' – tymeJV 2015-01-09 19:11:11

+0

語法錯誤:從[{4}]開始的表達式[{3}]的列{2}的標記「{1}」。 – 2015-01-09 19:16:34

+0

爲了幫助您檢查語法檢查結果,請嘗試提供一個調度程序。 – DeborahK 2015-01-09 19:32:05

回答

1

這應該工作:

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

+0

感謝DeborahK以及爲解決此問題做出貢獻的其他人! – 2015-01-09 19:38:31

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

+0

語法錯誤:從[{4}]開始的表達式[{3}]的列{2}的標記「{1}」。 – 2015-01-09 19:27:40

+1

嘗試刪除:真正的部分。您正在過濾ProductCategoryType:'C',正確嗎? – DeborahK 2015-01-09 19:30:18

+0

ng-repeat =「currentDiscount.DiscountProducts | filter中的類別:{ProductCategoryType:'C'}」已處理。 @DeborahK你想用你的解決方案創建一個答案,以便我可以將其標記爲已接受? – 2015-01-09 19:34:56