2013-04-18 1 views
9

원래의 질문에녹아웃 'for'바인딩?

이 하나라도 있거나 for 루프와 유사한 행동을 허용 것 한방을 결합 알고 있나요? 내가 원하는 것을 foreach로 만들 수는 있지만 그렇게하지 않으면 좋을 것입니다.

나는 사용자가 만드는 선택에 따라 테이블 행을 만들려고하고 2

편집. 어떤 경우에는 x 행을 필요로합니다. 여기서 x는 배열의 길이이고, 다른 시간 x는 n 개의 배열을 표시하는 데 필요한 최대 숫자 행을 나타냅니다.

예 : image1은 크기가 다른 4 개의 다른 모든 배열을 기반으로 구축되었습니다. image2는이 경우 두 배가됩니다.

enter image description here enter image description here

<div data-bind="if: selectedTab()"> 
<table> 
<thead> 
    <tr> 
    <td> 
     <div class="a-i-post-All"></div> 
    </td> 
    <!-- ko foreach:$root.selectedTab().races--> 
    <td> 
     <input type="checkbox" /> 
    </td> 
    <!-- /ko --> 
    </tr> 
</thead> 
<tbody data-bind="foreach: selectedTab().runners"> // <-- This is an empty array created by the max number of Runners in the selectedTabs array of Races 
    <tr> 
    <td> 
     <div class="a-i-post"></div> 
    </td> 
    <!-- ko foreach:$root.selectedTab().races--> 
    <td> 
     <!-- ko if: Runners.length > $parentContext.$index()--> 
     <input type="checkbox" /> 
     <!-- /ko --> 
    </td> 
    <!-- /ko --> 
    </tr> 
</tbody> 

는 위의 잘 작동하고 내가 원하는 것을 만들지 만, 난 그냥 수 있도록 빈 배열로 숫자에서 selectedTab.runners을 설정하는 것을 좋아하지 않는다 그것을 루프를 n 번 행을 만듭니다. 나는 제안을 위해 열려 있습니다. 참고 나는 원래이 질문을 게시 한 시점에서이 코드를 상당히 수정했으며 지금은 초기 질문과 관련된 단 한 건으로 나타납니다.

+0

왜 $ 지수 foreach 문을 사용하지 않으 위해 별을 인쇄합니다

<!-- ko foreach: new Array(the_length_you_need) --> <span>&#9733;</span> <!-- /ko --> 

를? –

+0

나는 배열이 아닌 숫자로 foreach 할 수 있기를 원한다. – Zholen

+2

이것은 녹아웃이 무엇을위한 것이 아닌가. 나는 자바 스크립트에서 정의 된'x' 횟수만큼 무언가를 반복 할 필요가있는 현실적인 예제를 생각하려고한다.보기가 처음 생성 될 때 단순히 서버 측에서 처리 할 수없는 경우가있다. 나는 잃어 버렸다. 실제로, 당신이 실제로하려고하는 것을 당신이 실제로 말하면, 누군가 당신에게 더 좋은 방법을 보여줄 수 있습니다. –

답변

12

Repeat 바인딩이 정확히 수행합니다.

<tbody> 
    <tr data-bind="repeat: { foreach: selectedTab().runners, index: '$runner' }"> 
    <td> 
     <div class="a-i-post"></div> 
    </td> 
    <td data-bind="repeat: selectedTab().races"> 
     <!-- ko if: $item().Runners.length > $runner --> 
     <input type="checkbox" /> 
     <!-- /ko --> 
    </td> 
    </tr> 
</tbody> 
당신은 Array 객체 생성 할 수 있습니다
+0

제 첫 질문에 답해 주셔서 감사합니다. 이것은 내가 원하는 것을 수행하는 것처럼 보이지만, 지금은 코드를 다시 작성하고 더 이상 그런 작업을 처리 할 필요가 없을 수도 있습니다. 성능상의 이유로 사용하지 않습니다. – Zholen

+0

그건 정말 흥미로운 마이클 보인다! –

3

당신은 다음과 같이 수행 할 수 있습니다

<div data-bind="foreach: [0,0,0,0,0]"> 
    <span data-bind="text: $index"></span> 
</div> 

을 그리고 당신은 요소 0-4를 얻을 수 있습니다.

그러나 Chris가 의견에서 말했듯이 이것은 이상하게 보입니다. 당신이하려는 일을 우리에게 말해 주면, 우리는 올바른 방향으로 당신을 알려줄 것입니다.

4

:이 the_length_you_need 시간