2012-06-21 43 views
20

Tôi đang sử dụng công cụ mẫu bộ ria mép và tôi chỉ muốn hiển thị mục đầu tiên trong danh sách dài nhưng không thể tìm thấy tài liệu để làm như vậy?chỉ hiển thị mục đầu tiên trong danh sách bằng cách sử dụng Mustache

nếu tôi sử dụng:

{{# links}}<a href="{{& url}}">{{& title }}</a>{{/ links}} 

tôi nhận được tất cả các liên kết, tuy nhiên tôi chỉ muốn là người đầu tiên được hiển thị, âm thanh dễ dàng, nhưng tôi không thể tìm thấy bất kỳ tài liệu về vấn đề này.

+0

Bạn có thể thiết lập các câu trả lời sau đây là một trong những quyền? http://stackoverflow.com/a/17950970/171711 – Coyote

Trả lời

36

Giải pháp này đang làm việc với phiên bản mới của Mustache.js (chỉ):

mustache.render("{{a.0}}", {a: ['hi','world']}) 
=> 'hi' 
+1

Điều này sẽ được đặt làm câu trả lời đúng ngay bây giờ. – Coyote

+0

nếu chúng ta muốn có được vị trí cuối cùng, mà không biết chúng ta có bao nhiêu itens trong mảng? – Periback

2

Moustache có không có logic, từ docs:

Chúng tôi gọi nó là "logic-less" vì không có câu lệnh if, khác khoản, hoặc cho vòng lặp. Thay vào đó chỉ có thẻ. Một số thẻ là được thay thế bằng một giá trị, một số không có gì và một số giá trị khác. Tài liệu này giải thích các loại thẻ Mustache khác nhau.

Vì vậy, những gì bạn chủ yếu muốn là một cơ chế để làm một if link is the first - vì vậy bạn có thể xử lý này ở phía bên dữ liệu, bằng cách chỉ đặt 1 phần tử trong dữ liệu của bạn, hoặc bằng cách thêm một đoạn dữ liệu như khi bạn đang ở đưa dữ liệu của bạn trong khi bạn thêm một giá trị như display và đặt nó vào 'inline' hoặc 'không' thì trong mẫu của bạn làm:

{{# links}}<a href="{{& url}}" style="display: {{display}};">{{& title }}</a>{{/ links}} 

sau đó, sau đó, bạn có thể gọi kịch bản trong trang để thay đổi style.display trên một số hành động của người dùng hoặc ứng dụng.

Đây là lần đầu tiên tôi có thể dễ dàng đặt data = data[0] cho mẫu cụ thể này. Vấn đề là bạn có thể muốn sử dụng toàn bộ danh sách đó tại một thời điểm nào đó, để nhận xét về điều đó tôi cần phải xem thêm cách sử dụng của bạn và nơi dữ liệu được điền từ đó.

+0

Cảm ơn vì điều này .. Tôi có thể thấy những gì bạn nói nhưng có vẻ lạ. Tôi đã làm những gì bạn đã đề xuất và thay đổi mô hình trước khi kết xuất. Cảm ơn – Alex

+0

Vâng, ý tưởng là Mustache là nhanh, nhưng nó không có chi phí hợp lý của các thư viện templating khác. Bạn có thể xem xét các thư viện templating khác nếu Mustache không phù hợp với nhu cầu của bạn. Có cuộc thảo luận tốt ở đây: http://www.quora.com/JavaScript/What-is-the-best-JavaScript-templating-framework-and-why – artlung

1

Giải pháp @Millad được trình bày gần như làm việc cho tôi. Sử dụng handlebars.js mặc dù tôi đã phải sử dụng nó với dấu ngoặc vuông.

{{ a.[0] }} 

=> hello

res.render('view', { a: ['hello', 'world'] }) 
Các vấn đề liên quan