Я новичок в 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 или я просто что-то неправильно понимаю. Заранее спасибо!
Обновление:
По какой-то причине @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()