Jestem nowy w CoffeeScript i wydaje mi się, że mam problem ze składnią wywołań metod.Metoda Składnia wywołania w CoffeeScript
Oto model karty:
class exports.Card extends Backbone.Model
defaults:
pip: '4'
suit: '♠'
color: 'b'
rows: ->
rows =
'4': [2, 0, 2]
rows[@pip]
a odpowiednimi część szablonu:
<ul class="col cols-<%= @card.rows()[0] %>">
który daje mi błąd Uncaught TypeError: Object #<Object> has no method 'rows'
Konkretnie zastanawiam się, czy I "Używam niepoprawnej składni dla metody wierszy karty lub jeśli coś nie rozumiem. Z góry dziękuję!
Aktualizacja:
Z jakiegoś powodu, @card.property
zawsze działa dobrze, ale @card.any_method()
nigdy nie robi. W tej chwili obejrzałem to, korzystając z właściwości, ale bardzo bym chciał, gdyby ktoś był w stanie wyjaśnić to zachowanie. Dzięki jeszcze raz!
Aktualizacja 2:
Używam http://brunchwithcoffee.com czy jest to pomoc dla każdego, a oto plik main.coffee
aby pokazać, jak instancja @card
jest tworzony i przekazywany do widzenia.
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()
W jaki sposób utworzono "@ card"? Jako 'nowa karta eksportowa'? Czy przechodzi test '@ card instanceof exports.Card'? –
zaktualizowano, aby pokazać, jak tworzona jest karta @ label. – mportiz08
Wskazówka dotycząca stylu: Możesz wpisać '{Card} = wymagaj 'models/card_model'' zamiast' Card = require (' models/card_model '). –