2013-03-19 18 views
5

Tôi có một vòng lặp for mà tôi muốn bao gồm một cái nhìn mẫu trong:metor lưỡi mẫu ném "mang tính bước ngoặt thứ hai trong cùng một chi nhánh" ngoại lệ trong vòng lặp for

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 

ghế. lưỡi:

- id = 'p' + (i+1) 
    div(id="#{id}") 
     -if (table.hasAt(i)) 
      p= table.usernameAt(i) 
     -else 
      -if(!table.playerSitting()) 
       a.btn.btn-inverse.sit(href="#", data-key="#{i}") Sit 
      -else 
       p &nbsp; 

Khi lần đầu tiên tôi tải chế độ xem, mọi thứ đều tốt. Nhưng nếu tôi ngồi hoặc đứng, hoặc đi đến bàn khác, tôi có được điều này:

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 |  

Tôi tìm tôi có thể khắc phục điều này bằng cách tạo ra một "ghế" bộ sưu tập lưu trữ id bảng người dùng id &, nhưng điều đó có vẻ ngớ ngẩn . Tôi hiện đang sử dụng một thuộc tính mảng của bảng gọi là "người chơi", chỉ số 0-6 cho mỗi chỗ ngồi ... ít nhất, đó là ý tưởng. =)

Tôi cũng nên đề cập đến tôi thay seat.blade với:

p hi 

và không may mắn, vấn đề tương tự.

Bất kỳ ý tưởng nào?

Sửa
Thông tin Version: phiên bản
Meteorite 0.4.9
Meteor phiên bản 0.5.9 (git checkout)
Blade 3.0.3

+0

Tôi phải hỏi ... bạn đang chạy phiên bản Meteor nào? Phiên bản Blade nào? Và, không 'table.blade' hoặc bất kỳ mẫu cha mẹ có chứa [khối khai báo] (https://github.com/bminer/node-blade#blocks)? Ngoài ra, tôi nên đề cập đến rằng bạn có thể muốn tạo ra một vấn đề ở đây: https://github.com/bminer/node-blade/issues – BMiner

+0

Tôi đang sử dụng phiên bản Meteorite 0.4.9 & Meteor phiên bản 0.5.9. Blade là 3.0.3 theo đó là package.json trong thư mục ~/.meteorite của tôi ... –

+0

Ngoài ra, không có khối nào trong các mẫu ... tất cả các tệp .blade đơn giản trong dạng xem/... –

Trả lời

3

Lỗi này thực sự là một kết quả của việc sử dụng plain- cũ cho các vòng thay vì foreach vòng lặp.

Vùng foreach được ưa thích hơn ... [thường xuyên cho vòng] không chỉ vì dễ đọc và ngắn gọn, nhưng vì nó cũng cung cấp Blade với khả năng tích hợp tốt hơn với các trang sống động cập nhật (đặc biệt Meteor và Spark). Tức là, nếu cập nhật trang động hỗ trợ theo dõi bộ sưu tập phản hồi, hoạt động DOM hiệu quả nhất có thể xảy ra để cập nhật kết quả của chế độ xem tại chỗ, mà không cần hiển thị lại toàn bộ mẫu Blade.

Trong trường hợp của bạn, Spark không thể hiển thị lại các mẫu được bao gồm của bạn vì các chi nhánh phù hợp cho cùng một mốc. Nếu bạn sử dụng foreach, sự cố này đã được giải quyết.

Tuy nhiên, trong một số trường hợp (như của bạn), foreach không phù hợp. Tôi nghĩ rằng giải pháp ở đây là tạo ra một cú pháp "thường xuyên cho vòng lặp" trong Blade để xử lý các vòng lặp. Bởi vì điều này, tôi đã tạo ra issue # 157.

+1

Bạn thật tuyệt vời! –

Các vấn đề liên quan