我是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'。 –