2013-06-24 35 views
10

Tôi mới để ria mép JSON, xin vui lòng chịu với tôi :)lặp qua mảng với bộ ria mép

Tôi có một mảng trong JSON tôi

"prop":{"brands":["nike","adidas","puma"]} 

nếu tôi có các mẫu như

này
{{#prop}} 
<b>{{brands}}</b> 
{{prop}} 

và tôi muốn nhận một cái gì đó như:

<b>nike</b> 
<b>adidas</b> 
<b>puma</b> 

Tôi hiểu rằng các phần tử trong mảng không phải là cặp khóa-giá trị băm, tuy nhiên tôi tự hỏi liệu có phải trong phần ria mép mà tôi có thể lặp qua các phần tử không.

Cảm ơn!

Trả lời

1

ria mép là vô lý, vì vậy việc viết vòng lặp/vòng lặp của riêng bạn trong đó là không thể. Nó rất dễ dàng để chuyển đổi JSON của bạn mặc dù. Ví dụ:

var json = '{"prop":{"brands":["nike","adidas","puma"]}}'; 
var obj = JSON.parse(json); 
var data = {brands: obj.prop['brands'].map(function(x){ return {name: x}; })}; 

Cung cấp cho bạn một biến data mà sẽ làm việc với các mẫu:

{{#brands}} 
    <b>{{name}}</b> 
{{/brands}} 
+0

Cảm ơn, phân tích cú pháp JSON trước khi bàn tay có vẻ là giải pháp tốt nhất. – Liang

29

Đây là một fiddle làm việc: http://jsfiddle.net/Qa4UX/

Về cơ bản, bạn cần phải lặp qua mảng nhãn hiệu . Kể từ mảng của bạn là thô và không có các đối tượng bên trong, bạn phải tham khảo mỗi chuỗi như vậy:

{{#props}} 
    <ul> 
    {{#brands}} 
    <li> 
    {{#.}} 
     <b>{{.}}</b> 
    {{/.}} 
    </li> 
    {{/brands}} 
    </ul> 
{{/props}} 

Bạn cũng có thể tìm thấy nhiều ví dụ nhiều hơn ở đây: https://github.com/janl/mustache.js#mustachejs---logic-less-mustache-templates-with-javascript

+0

cảm ơn câu trả lời Paul, tôi thấy quan điểm của bạn và nghĩ rằng nó sẽ là một giải pháp, tuy nhiên tôi không thể có được ví dụ fiddle để tạo ra kết quả html khi tôi nhấn "chạy", nhưng một giải pháp rất tốt đẹp, cảm ơn! – Liang

+0

hi. Chỉ cần ra khỏi tò mò: Bạn không thấy danh sách trong khung html trong jsfiddle? – peshkira

+1

Không,

là tất cả những gì tôi thấy và liên kết "Chạy" không có gì với nó ... – Liang

14

này hoạt động

{{#json.props.brands}} 
<h1>{{.}}</h1> 
{{/json.props.brands}} 

{{.}} Khi lặp qua một chuỗi các chuỗi, a. có thể được sử dụng để chỉ mục hiện tại trong danh sách.

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