2012-06-23 11 views
14

Cách thiết lập biến bên trong mẫu underscore.js cho ứng dụng được tạo bằng backbone.js? Tôi chỉ muốn tạo các chuỗi đã xử lý có thể tái sử dụng. Ngoài ra, có thể sử dụng các chức năng tích hợp của underscore.js như _.escape để xử lý các biến đó?biến bên trong mẫu underscore.js

<script type="text/html" id="templateresults"> 

<p><%= encodeURIComponent(title) %></p> // this works 

// try 1: 
var encodedTitle = encodeURIComponent(title); // shows up as regular text 
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text 

// try 2: 
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up 
<p><% '+encodedTitle+' %></p> // nothing shows up 

</script> 

title là một mục JSON (chuỗi văn bản).

Encoded đầu ra: This%20is%20a%20Sample%20Title
Regular đầu ra: This is a Sample Title

Trả lời

20

thử của bạn 2 là gần như ngay lập nhưng thẻ nơi bạn đầu ra encodedTitle thiếu = lúc bắt đầu và không cần + trong chuỗi. Nên là:

<p><%= encodedTitle %></p> 

Hoặc bạn cũng có thể làm:

<p><% print(encodedTitle) %></p> 

Trong mẫu gạch, bất kỳ javascript bạn muốn đánh giá phải được chứa bên trong <% %>, do vậy tại sao nỗ lực thứ hai của bạn chỉ cần xuất ra javascript như một chuỗi. Bạn đã sử dụng chính xác số = trong mẫu của mình ở trên cùng nhưng bỏ qua nó trong thử nghiệm 2.

= yêu cầu công cụ tạo mẫu kết quả của javascript đính kèm dưới dạng chuỗi. Nếu bạn không sử dụng =, javascript được thực thi, nhưng không có đầu ra nào. Các mẫu của gạch dưới cung cấp chức năng print() thay thế cho việc sử dụng =, tôi không biết rằng một cách nào đó tốt hơn cách khác.

+0

Ngọt ngào! Nó hoạt động. Cảm ơn! – Steve