2013-03-19 4 views
5

을 위해 내가에서 템플릿보기를 포함 할 그 루프에 대한이의 "초 같은 지점에서 랜드 마크"예외가 발생합니다 :metor 블레이드 템플릿 루프

table.blade :

#game 
    h1= table.name 
     -if(table.playerSitting()) 
      a.btn.btn-danger.stand(href="#") Stand 
    #table 
     -for (var i=0; i<7;i++) 
      include 'seat' exposing i 

좌석. 블레이드 :

처음보기를로드하면 모든 것이 잘립니다. 나는 사용자 ID & 테이블 ID를 저장하는 "좌석"모음을 만들어이 문제를 해결할 수 있습니다 파악

Exception from Deps recompute: Error: Can't create second landmark in same branch 
    at /home/thomporter/meteor/blackjack/views/table.blade:8:4 

6 |  #table 
7 |   -for (var i=0; i<7;i++) 
8 >    include 'seat' exposing i 
9 |  
10 |  

을,하지만 바보 같다 : 나는 앉아서 또는 서서, 또는 다른 테이블로 이동하지만,이 얻을 . 저는 현재 "players"라는 테이블의 배열 속성을 사용하고 있습니다. 인덱스마다 0-6의 인덱스가 있습니다. 적어도 아이디어입니다.

p hi 

과 행운, 같은 문제 =)

나는 또한 함께 seat.blade을 대체 언급해야한다.

아이디어가 있으십니까?

편집
버전 정보 :
운석 버전 0.4.9
유성 버전 0.5.9 (자식 체크 아웃)
블레이드 3.0.3

+0

나는 물어야한다 ... 어떤 버전의 Meteor를 실행하고 있습니까? Blade의 어떤 버전입니까? 그리고'table.blade' 또는 부모 템플릿에 [블록 선언] (https://github.com/bminer/node-blade#blocks)이 포함되어 있습니까? 또한, 여기에 문제를 만들고 싶습니다. https://github.com/bminer/node-blade/issues – BMiner

+0

Meteorite 0.4.9 버전과 Meteor 0.5.9 버전을 사용하고 있습니다. 블레이드는 내 ~/.meteorite 폴더의 package.json에 따르면 3.0.3입니다 ... –

+0

또한 템플릿의 블록이 없습니다 ... 뷰의 모든 일반 .blade 파일/... –

답변

3

이 버그는 plain- 실제로 사용의 결과이다 foreach 루프 대신 오래된 루프를 사용하십시오.

foreach는 영역 이상이 바람직하다

... [루프에 대한 일반]뿐만 아니라 때문에 가독성과 간결함의뿐만 아니라 더 구체적으로 (라이브 페이지 업데이트 엔진 을 통합 할 수있는 능력 블레이드 을 제공하기 때문에 유성 및 불꽃). 즉, 라이브 페이지 업데이트 엔진이 리 액티브 컬렉션 추적을 지원하면 전체 Blade 템플릿을 다시 렌더링하지 않고도 가장 효율적인 DOM 작업이 수행되어 전체보기의 결과를 업데이트 할 수 있습니다.

귀하의 경우, 동일한 랜드 마크에 일치하는 분기로 인해 Spark에서 포함 된 템플릿을 다시 렌더링하지 못합니다. foreach을 사용하면이 문제가 해결됩니다.

그러나 어떤 상황에서는 (너 같은) foreach이 적합하지 않습니다. 여기서 해결 방법은 루프 내에서 "규칙적인 for 루프"구문을 만들어서 루프를 처리하는 것입니다. 이 때문에 issue # 157을 만들었습니다.

+1

당신은 최고입니다! –