Soy nuevo en CoffeeScript, y parece que tengo problemas con la sintaxis para los métodos de llamada.Método de sintaxis de llamada en CoffeeScript
Aquí está el modelo de tarjeta:
class exports.Card extends Backbone.Model
defaults:
pip: '4'
suit: '♠'
color: 'b'
rows: ->
rows =
'4': [2, 0, 2]
rows[@pip]
y la parte correspondiente de la plantilla:
<ul class="col cols-<%= @card.rows()[0] %>">
que me está dando el error Uncaught TypeError: Object #<Object> has no method 'rows'
En concreto, me estoy preguntando si Estoy usando una sintaxis incorrecta para el método de filas de la Tarjeta o si simplemente estoy entendiendo mal algo. ¡Gracias por adelantado!
Actualización:
Por alguna razón, @card.property
siempre funciona bien, pero @card.any_method()
nunca lo hace. Ya he pasado por alto esto mediante el uso de propiedades, pero me encantaría que alguien pudiera explicar este comportamiento. ¡Gracias de nuevo!
Actualización 2:
estoy usando http://brunchwithcoffee.com si se trata de una ayuda a nadie, y aquí está el archivo main.coffee
para mostrar cómo se crea la instancia @card
y se pasa a la vista.
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()
¿Cómo se creó '@ card'? Como 'nuevas exportaciones.Card'? ¿Pasa la prueba '@card instanceof exports.Card'? –
actualizado para mostrar cómo se está creando la tarjeta @ – mportiz08
Consejo de estilo: Puede escribir '{Card} = requerir 'modelos/modelo_cardio' en lugar de' Tarjeta = requerir (' modelos/modelo_cardio '). Tarjeta'. –