2012-01-24 37 views
10

tôi sử dụng underscore.js cho HTML Templating, thiết lập để sử dụng cú pháp ria mép, như thế này: {{ }}Làm thế nào để tôi nếu/sau đó trong "bộ ria mép" giống như underscore.js?

tôi có mã này:

<% if (typeof(date) != "undefined") { %> 
    <span class="date"><%= date %></span> 
<% } %> 

Làm thế nào tôi có thể dịch nó vào một bộ ria mép kiểu underscore.js mẫu, sử dụng {{ }}?

+3

Bạn nên thuê logic bên ngoài khuôn mẫu và chỉ hiển thị .date nếu typeof (ngày)! = "Không xác định trong chế độ xem của bạn, mẫu sẽ được coi là chỉ qua. –

Trả lời

20

tôi sử dụng:

_.templateSettings = { 
     evaluate : /\{\[([\s\S]+?)\]\}/g, 
     interpolate : /\{\{([\s\S]+?)\}\}/g 
    }; 

Sau đó, thay vì <%= … %> sử dụng {{ … }} và thay vì <% … %> sử dụng {[ … ]}

+0

tại sao lại sử dụng '([\ s \ S +?) 'thay vì' (. +?) 'như trong ví dụ từ tài liệu' underscore.js'? bất kỳ lý do nào? – simon

+1

@simon '[\ s \ S]' là một mẫu regex phổ biến sẽ khớp với BẤT K AN Ký tự '.' trong regex không khớp với các ký tự dòng mới. Công cụ regex được tạo sẵn cho JavaScript không cung cấp cách tạo' .' khớp với dòng mới (như bạn có thể làm với các công cụ regex khác). //www.regular-expressions. info/dot.html –

0
{{#date}} 
<span class="date">{{date}}</span> 
{{/date}} 
+1

điều này không thực sự hiệu quả đối với tôi! TheSifter hoạt động bên ngoài Template nhưng tôi vẫn đang tìm kiếm một phương thức làm việc Template bên trong !! Cảm ơn bạn anyway – trouble

-1

chỉ bao gồm mã này sau khi append nhấn

_.templateSettings = { 
    interpolate:/\{\{(.+?)\}\}/g 
}; 
+1

Đã xong! Câu hỏi của tôi về việc sử dụng if ... then ... else! Cảm ơn bạn – trouble

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