2011-12-22 1 views
8

Tôi đang cố gắng sử dụng phần mã này từ ví dụ về các tab của giao diện người dùng jQuery và chuyển nó thành Coffeescript. Tôi đã chạy nó thông qua công cụ tuyệt vời http://js2coffee.org/.Làm thế nào để thoát khỏi nội suy chuỗi trong Coffeescript

var tabTitle = $("#tab_title"), 
    tabContent = $("#tab_content"), 
    tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>", 
    tabCounter = 2; 

Vấn đề là tabBáo cáo biến khai báo. Coffeescript đang cố gắng để làm nội suy chuỗi trên nó, như xa như tôi có thể nói. Tôi đã thử chạy nó với một dấu gạch chéo, nhưng điều đó chỉ giải quyết để sử dụng một dấu gạch chéo trong js chuyển đổi.

Trả lời

15

Sử dụng đơn dấu ngoặc kép để phân định chuỗi của bạn: http://coffeescript.org/#strings

Nếu bạn muốn sử dụng đơn dấu ngoặc kép trong chuỗi của bạn mà không tự thoát chúng, bạn có thể sử dụng 3 đơn dấu ngoặc kép:

x = ''' 
my string's ok with single quotes and #{doesn't interpolate} 
''' 

Điều đó nói rằng , đây là HTML, do đó, dấu ngoặc kép thực sự phổ biến hơn cho các thuộc tính so với dấu nháy đơn. Do đó, chuỗi của bạn có thể được viết là:

tabTemplate = '<li><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>' 

mà không gặp bất kỳ sự cố nào.

+2

Yuck. Đó có phải là điều tốt nhất chúng ta có thể làm không? Tại sao báo giá kép không hoạt động? –

+0

Bởi vì chuỗi kép được trích dẫn là những gì gây ra nội suy :) Đó là sự khác biệt giữa các chuỗi kép và đơn được trích dẫn. Xem http://coffeescript.org/#strings – nicolaskruchten

+2

Vẫn còn yuck. Có cách nào để thoát khỏi toàn bộ chuỗi, như C# không với @ "some \ string"? –

7

Thoát với dấu chéo ngược làm việc:

$ coffee -bce '"\#{a}"' 
"\#{a}"; 

$ coffee -bce '"#\{a}"' 
"#\{a}"; 
+0

Vì vậy, chúng ta có thể làm: str = "\" # {văn bản được gói với dấu ngoặc kép} \ "" – YaTaras