2012-07-27 17 views
16

tôi có mô hình:Làm thế nào để lặp qua mảng trong mẫu handlebar không tên được định nghĩa trong mô hình

[ 
    { 
    "ID": 5, 
    "email": "[email protected]" 
    }, 
    { 
    "ID": 6495, 
    "email": "[email protected]" 
    } 
] 

Mã cho lặp lại trong tay lái:

{{#each xxx}} 
    <p>{{email}}</p> 
    {{/each}} 

làm thế nào để xác định xxx?

Nếu JSON có tên trong mô hình như:

users: [ 
     { 
     "ID": 5, 
     "email": "[email protected]" 
     }, 
     { 
     "ID": 6495, 
     "email": "[email protected]" 
     } 
    ] 

tôi sẽ lặp đơn giản trong tay lái như:

{{#each users}} 
    <p>{{email}}</p> 
    {{/each}} 
+2

Tôi khuyên bạn nên thay đổi câu trả lời được chấp nhận của bạn thành câu trả lời của Dave Stibrany bên dưới. Chắc chắn có vẻ như là cách tốt hơn để làm điều này. –

Trả lời

16

Nếu bạn có điều này:

var a = [ 
    { 
    "ID": 5, 
    "email": "[email protected]" 
    }, 
    { 
    "ID": 6495, 
    "email": "[email protected]" 
    } 
]; 

Sau đó chỉ cần cung cấp tên mong muốn khi bạn gọi mẫu được biên dịch:

var t = Handlebars.compile($('#t').html()); 
var h = t({ users: a }); 

Điều đó sẽ để lại cho bạn HTML mong muốn của bạn trong h.

Demo: http://jsfiddle.net/ambiguous/ZgVjz/

Nếu bạn có một bộ sưu tập được xây dựng từ dữ liệu:

var c = new C(a); 

Sau đó, bạn muốn gọi mẫu như thế này:

var h = t({ users: c.toJSON() }); 

Demo: http://jsfiddle.net/ambiguous/uF3tj/

+3

Tác phẩm này, nhưng câu trả lời từ [Dave Stibrany] (http://stackoverflow.com/users/546741/dave-stibrany) [dưới đây] (http://stackoverflow.com/a/17329692/591374) là một giải pháp tốt hơn. – MusikPolice

34

Điều này cũng hoạt động:

{{#each this}} 
<p>{{email}}</p> 
{{/each}} 
Các vấn đề liên quan