我是CoffeeScript的新手,我似乎遇到了調用方法的語法問題。CoffeeScript中的方法調用語法
這裏的顯卡型號:
class exports.Card extends Backbone.Model
defaults:
pip: '4'
suit: '♠'
color: 'b'
rows: ->
rows =
'4': [2, 0, 2]
rows[@pip]
和模板的相關部分:
<ul class="col cols-<%= @card.rows()[0] %>">
這是給我的錯誤Uncaught TypeError: Object #<Object> has no method 'rows'
具體來說,我想知道如果我對卡片的行方法使用不正確的語法,或者我只是誤解了某些東西。提前致謝!
更新:
出於某種原因,@card.property
一直工作正常,但@card.any_method()
從來不會。我現在通過使用屬性來解決這個問題,但如果有人能夠解釋這種行爲,我會很喜歡它。再次感謝!
更新2:
我使用http://brunchwithcoffee.com如果它是任何人幫助,而這裏的main.coffee
文件來說明如何創建和傳遞給視圖的@card
實例。
window.app = {}
app.routers = {}
app.models = {}
app.collections = {}
app.views = {}
Card = require('models/card_model').Card
MainRouter = require('routers/main_router').MainRouter
HomeView = require('views/home_view').HomeView
CardView = require('views/card_view').CardView
# app bootstrapping on document ready
$(document).ready ->
app.initialize = ->
app.routers.main = new MainRouter()
app.views.home = new HomeView()
app.views.card = new CardView(model: new Card(color: 'r', suit: '♥', pip: '7'))
app.routers.main.navigate 'home', true if Backbone.history.getFragment() is ''
app.initialize()
Backbone.history.start()
是如何'@ card'產生的?作爲'new exports.Card'?它是否通過測試'@card instanceof exports.Card'? –
已更新,以顯示如何創建@card – mportiz08
樣式提示:您可以編寫'{Card} = require'models/card_model''而不是'Card = require('models/card_model')。Card'。 –