Tôi mới đến CoffeScript và tôi đã tự hỏi nếu có một cách viết các đoạn mã sau đây mà không cần tham khảo các ứng dụng biến toàn cục:Tham khảo tầng lớp phụ huynh trong CoffeeScript từ một callback jQuery
class App
constructor: ->
@ui = ui.init()
$('#content-holder a[rel!=dialog]').live 'click', ->
link = $(@).attr 'href'
app.loadUrl link
return false
loadUrl: (href) ->
# ...
app = new App()
Sử dụng chất béo mũi tên không hoạt động, như sau đó tôi đã làm mất tài liệu tham khảo cho các đối tượng jQuery, tức là
class App
constructor: ->
@ui = ui.init()
$('#content-holder a[rel!=dialog]').live 'click', =>
# @ now references App
link = $(@).attr 'href'
this.loadUrl link
return false
loadUrl: (href) ->
# ...
phần đầu tiên của mã làm việc, nhưng tôi muốn để thoát khỏi của biến toàn cầu nếu có thể :-)
Chúc mừng, Gaz.
Các bạn đã thử '@loadUrl liên kết' thay vì 'this.loadUrl' Nếu điều đó không hoạt động, vui lòng đăng javascript đã biên dịch. – Gazler
@something chỉ là một đường cú pháp cho this.something, afaik – Guard
Điều đó sẽ không hoạt động, bởi vì @ (this) sẽ tham chiếu đến chức năng gọi lại ẩn danh. – Gaz