2013-02-13 40 views

Trả lời

59

Có một lỗi cú pháp trong ví dụ. Cú pháp chính xác là {{@../index}}.

Chúng tôi đang tìm cách để chúng tôi có thể hỗ trợ đặt tên tùy chỉnh các thông số này trong các phiên bản ngôn ngữ trong tương lai để dễ xử lý hơn. https://github.com/wycats/handlebars.js/issues/907

+1

Câu trả lời được đánh dấu đúng là hữu ích, nhưng đây là câu trả lời đúng cho câu hỏi. –

+0

oh có vẻ như đây là câu trả lời thực tế đầu tiên, lỗi của tôi –

+1

Điều này không hoạt động trong ember v2.2.0. @Andrew Toy có câu trả lời đúng. –

26

này đã làm việc cho tôi:

{{#each company}} 
{{setIndex @index}} 
{{#each employee}} 
    {{../index}} 
{{/each}} 
{{/each}} 

JS:

Handlebars.registerHelper('setIndex', function(value){ 
    this.index = Number(value + 1); //I needed human readable index, not zero based 
}); 

Chỉ cần đảm bảo đối tượng company không có thuộc tính index.

+1

Đáng buồn thay, điều này dường như không hoạt động nếu vòng lặp bên trong được kết xuất từ ​​một mẫu: '' {{> my-template}} '' yields '' Không thể đọc chỉ mục 'property' của undefined''. Bạn có biết một giải pháp cho điều đó không? – Lincoln

+1

@Lincoln bạn có thể thử các gợi ý ở đây http://stackoverflow.com/a/18026063/271442 - Tôi đã đi cho phương pháp tiếp cận trợ giúp bao gồm. – mynameistechno

+0

Đây là một mẹo tuyệt vời. Tôi sẽ chia sẻ một liên kết jsfiddle. Cảm ơn! –

0

registe một phương pháp Helper:

Handlebars.registerHelper('eachWithIndex', function(cursor, options) { 
    var fn = options.fn, inverse = options.inverse; 
    var ret = ""; 
    var idx = -1; 
    //console.log(cursor); 
    cursor.forEach(function(item){ 
     idx++; 
     console.log(item.index); 
     item.index = idx; 
     ret+=fn(item); 
    }); 
    return ret; 
}); 

tay lái mẫu:

{{#eachWithIndex outer}} 
    {{#each inner}} 
    {{../index}} // access outer index like this. I used hanlebars V1.3.0 
    {{index}} // access inner index 
    {{/each}} 
{{/eachWithIndex}} 
7

Trả lời:{{@../index}}

Từ Handlebars docs (xem dưới cùng của 'từng' phần helper):

"Nested each khối có thể truy cập các biến interation qua đường depted Để truy cập vào. chỉ có thể sử dụng chỉ mục chính, ví dụ: {{@../index}}. "

LƯU Ý: Tôi đang sử dụng v1.3 nên ít nhất nó cũ.

NHẮC NHẮC: Người trợ giúp là lựa chọn tốt nhất cuối cùng của bạn. 9/10 có một giải pháp tốt hơn.

+0

đây là câu trả lời thực tế –

+0

{{@key}} là nó cũng được hỗ trợ trong phiên bản cũ hơn? – ajayv

3

Dường như có cú pháp mới trong Ember v2.2.0. Tôi đã thử tất cả các câu trả lời ở đây và họ đã không làm việc cho tôi.

Những gì tôi tìm thấy đã làm việc là đặt tên cho chỉ mục vòng lặp của cha và chỉ mục vòng lặp con.

{{#each parents as |parent parentIndex|}} 
    {{parentIndex}} 
    {{#each children as |child childIndex|}} 
     {{parentIndex}} 
     {{childIndex}} 
    {{/each}} 
{{/each}} 
Các vấn đề liên quan