La méthode de la Syntaxe d'Appel en CoffeeScript

Je suis nouveau sur CoffeeScript, et il me semble avoir des problèmes avec la syntaxe de l'appel de méthodes.

Voici le modèle de la Carte:

class exports.Card extends Backbone.Model
  defaults:
    pip:   '4'
    suit:  '♠'
    color: 'b'

  rows: ->
    rows =
      '4': [2, 0, 2]
    rows[@pip]

Et la partie pertinente du modèle:

<ul class="col cols-<%= @card.rows()[0] %>">

qui me donne l'erreur Uncaught TypeError: Object #<Object> has no method 'rows'

Plus précisément, je me demande si je suis en utilisant une syntaxe incorrecte pour les lignes de la méthode de la Carte ou si je suis juste un malentendu quelque chose. Merci à l'avance!

Mise à jour:

Pour une raison quelconque, @card.property fonctionne toujours très bien, mais @card.any_method() ne le fait jamais. J'ai contourné le moment à l'aide de propriétés, mais j'aimerais que quelqu'un était en mesure d'expliquer ce comportement. Merci encore!

Mise à jour 2:

Je suis en utilisant http://brunchwithcoffee.com si c'est une aide à toute personne, et voici le main.coffee fichier à montrer comment le @card instance est créée et transmise à la vue.

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()
  • Comment a été @card créé? Comme new exports.Card? Est-il passer le test @card instanceof exports.Card?
  • mis à jour pour montrer comment l' @la carte est en cours de création
  • Conseils de Style: Vous pouvez écrire {Card} = require 'models/card_model' au lieu de Card = require('models/card_model').Card.
InformationsquelleAutor mportiz08 | 2011-08-26