2014-12-30 102 views
0

返回對象的屬性我有很多對象的JavaScript數組,像這樣:聚合物獲得通過過濾器

var myArray = [ 
    { 
     "id": 1, 
     "name": "Name 1", 
     "active": false 
    },{ 
     "id": 2, 
     "name": "Name 2", 
     "active": true 
    },{ 
     "id": 3, 
     "name": "Name 3", 
     "active": false 
    } 
] 

我使用這些對象的id參數對它們進行比較和存儲的值。要獲得屬於該ID的對象,我寫了一個過濾器:

getTest: function(id){ 
    var result = this.tests.filter(function(o){return o.id == id;}); 
    return result ? result[0] : null; 
} 

因此,我可以輕鬆地使用此過濾器內聯。現在我想獲得內聯過濾結果的屬性,例如:

<template if="{{ { id | getTest }.active"> 
    You are active! 
</template> 

但是,這樣做會導致無效表達式。我已經通過docs多次閱讀,但不太清楚這是否甚至可能。

我該怎麼做?

回答

1

您可以使用ID參數製作自定義過濾器。該過濾器將採取該項目,驗證它是否有良好的ID,並驗證它是否有效。

我原來的例子就是在這樣的Plunker http://plnkr.co/edit/FSwzndyjRxJIymehsZIg?p=preview

希望它能幫助!如果不是正是你想做的事,請你,我會盡力回答進一步:)

[編輯]

OK,閱讀您的意見後,這個怎麼樣:

<template is="auto-binding"> 

    <h1>Hi !</h1> 
    <template repeat="{{item in myArray}}"> 
     <template if="{{ item.active }}"> 
     <p> 
     Item id:{{item.id}} is active! <br> 
     Amount of steps in this test: {{ item.steps }} <br> 
     Test description: {{ item.description }} 
     </p> 
     </template> 
    </template> 
    </template> 

    <script> 
    var template = document.querySelector('template[is="auto-binding"]'); 
    template.count=0; 
    template.myArray = [ 
     { 
     "id": 1, 
     "name": "Name 1", 
     "active": false, 
     "steps": 3, 
     "description": "Lorem" 
     },{ 
     "id": 2, 
     "name": "Name 2", 
     "active": true, 
     "steps": 4, 
     "description": "Ipsum" 
     },{ 
     "id": 3, 
     "name": "Name 3", 
     "active": true, 
     "steps": 5, 
     "description": "Lorem Ipsum" 
     } 
    ]; 
</script> 

那麼你得到的輸出你想要的:

Item id:2 is active! 
Amount of steps in this test: 4 
Test description: Ipsum 

Item id:3 is active! 
Amount of steps in this test: 5 
Test description: Lorem Ipsum 

的Plunker是http://plnkr.co/edit/nBYeeZ2Uw0EFihAhNYpl?p

+0

的問題是這需要我爲每個屬性編寫一個過濾器?我的實際對象有超過10個屬性,我都需要訪問某處,例如顯示價格,結果,步驟等......此外,我包含的過濾器確實有效,但我不知道是否可以訪問該對象屬性而無需製作額外的過濾器。 – jdepypere

+0

只有一個過濾器可以使用盡可能多的屬性進行過濾。請給我描述一個你想要的例子,我會代碼:) – LostInBrittany

+0

那麼目前我有作爲一個數組的索引,所以我可以做'模板if =「{{myArray [id] .active }}「>」輕鬆地在一行中檢查對象的屬性。或者我也可以很容易地顯示其他數據:'此測試中的步驟數量:{{myArray [id] .steps}}','測試描述:{{myArray [id] .description}}'等等。 – jdepypere