【发布时间】:2011-08-27 09:03:23
【问题描述】:
我是 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 的 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 是如何创建的
-
风格提示:你可以写
{Card} = require 'models/card_model'而不是Card = require('models/card_model').Card。
标签: javascript syntax backbone.js coffeescript