2013-08-01 134 views
0

您好我有一個情況我有觀察到arrays.This可觀察到的陣列就是我的標記看起來像檢查在foreach一個if條件:只在最後一個索引

<div class="slider-wrap cycle-slideshow" data-cycle-fx="scrollHorz" data-cycle-timeout="0" data-cycle-slides="> section" data-cycle-prev=".slider-nav .prev" data-cycle-next=".slider-nav .next" data-cycle-pager=".slider-bullets" data-bind="foreach: category().questions()"> 
    <section data-bind="foreach: $data"> 
     <article> 
      <!-- ko if: hasGrade--> 
      <header data-bind="text: $data.description"></header> 
      <ul> 
       <li><a href="#">1</a></li> 
       <li><a href="#">2</a></li> 
       <li><a href="#">3</a></li> 
       <li><a href="#">4</a></li> 
       <li><a href="#">5</a></li> 
       <li><a href="#">6</a></li> 
       <li><a href="#">7</a></li> 
       <li><a href="#">8</a></li> 
       <li><a href="#">9</a></li> 
       <li><a href="#">10</a></li> 
      </ul> 
      <span data-bind="text: $parent.$index"></span> 
      <!-- /ko --> 
      <!-- ko if: hasMemo--> 
      <header data-bind="text: $data.memoTitle"></header> 
      <textarea></textarea> 
      <!-- /ko --> 
     </article> 
     <!-- /ko --> 
     <!-- ko if: $parent.$parent.hasMemo--> 
     <article> 
      <header data-bind="text: $parent.$parent.memoTitle"></header> 
      <textarea></textarea> 
     </article> 
     <!-- /ko --> 
    </section> 
</div> 

我不能改變的標記的結構,因爲我使用的插件,並沒有使用它的豪華。

最後,如果條件應該只進行檢查時,最後一個元素iterated.This是模型:

{ 
memo: null, 
categoryId: 1, 
title: "Docent", 
hasMemo: true, 
memoIsMandatory: false, 
memoTitle: "Docent Opmerkingen", 
questions: [ 
[ 
{ 
memo: null, 
grade: null, 
description: "De docent is goed voorbereid", 
memoTitle: "De docent is goed voorbereid", 
questionId: 11, 
hasGrade: false, 
hasMemo: true, 
showOnlyMemo: true 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent heeft kennis van zaken", 
memoTitle: "De docent heeft kennis van zaken", 
questionId: 12, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent kan de onderwerpen boeiend uitleggen", 
memoTitle: "De docent kan de onderwerpen boeiend uitleggen", 
questionId: 13, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent gaat goed in op de vragen uit de groep", 
memoTitle: "De docent gaat goed in op de vragen uit de groep", 
questionId: 14, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent stimuleert de groep tot actieve deelname", 
memoTitle: "De docent stimuleert de groep tot actieve deelname", 
questionId: 15, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
} 
], 
[ 
{ 
memo: null, 
grade: null, 
description: "De docent voegt inhoudelijk iets toe aan het studiemateriaal", 
memoTitle: "De docent voegt inhoudelijk iets toe aan het studiemateriaal", 
questionId: 16, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "De docent is praktijkgericht", 
memoTitle: "De docent is praktijkgericht", 
questionId: 17, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "Totaal oordeel over de docent", 
memoTitle: "Totaal oordeel over de docent", 
questionId: 18, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
} 
] 
] 
}, 
{ 
memo: null, 
categoryId: 7, 
title: "Opbouw programma en studiemateriaal", 
hasMemo: true, 
memoIsMandatory: false, 
memoTitle: "Opbouw programma en studiemateriaal Opmerkingen", 
questions: [ 
[ 
{ 
memo: null, 
grade: null, 
description: "Het studieprogramma is duidelijk opgebouwd", 
memoTitle: "Het studieprogramma is duidelijk opgebouwd", 
questionId: 54, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
}, 
{ 
memo: null, 
grade: null, 
description: "Het studiemateriaal is compleet, goed leesbaar en praktijkgericht", 
memoTitle: "Het studiemateriaal is compleet, goed leesbaar en praktijkgericht", 
questionId: 55, 
hasGrade: true, 
hasMemo: false, 
showOnlyMemo: false 
} 
] 
] 
} 
] 

在我們的情況下,它與questionId 55.IS有沒有辦法實現這個元素?

+0

淘汰種類取決於能夠改變標記。大多數插件允許修改它們。它在什麼許可下?否則,您需要手動將'hasMemo'設置爲false。 – FakeRainBrigand

+0

我剛剛得到了將if條件綁定到一個函數的功能,該函數將父類可觀察數組索引和子可觀察數組索引與我可以在我的javascript中檢查什麼是我們正在迭代的當前元素並返回true或false.My唯一的問題是,我不知道如何獲得父母索引可以幫助我嗎? – aleczandru

回答

2

foreach綁定中,您可以使用特殊的$index變量來引用您在循環中的位置。然後檢查很簡單。

<!-- ko if: $parent.$parent.hasMemo() && $index() + 1 === $parent.length --> 
<article> 
    <header data-bind="text: $parent.$parent.memoTitle"></header> 
    <textarea></textarea> 
</article> 
<!-- /ko --> 

注意,當您在綁定(而不是一個單一可觀察或變量的名稱)使用複雜的JS表達你需要明確地解開你的觀測。因此,$index()$parent.$parent.hasMemo()中的括號。

相關問題