Tôi mới dùng CoffeeScript và dường như tôi gặp sự cố với cú pháp cho các phương thức gọi điện.Cú pháp gọi phương thức trong CoffeeScript
Dưới đây là mô hình thẻ:
class exports.Card extends Backbone.Model
defaults:
pip: '4'
suit: '♠'
color: 'b'
rows: ->
rows =
'4': [2, 0, 2]
rows[@pip]
Và phần liên quan của mẫu:
<ul class="col cols-<%= @card.rows()[0] %>">
mà là cho tôi những lỗi Uncaught TypeError: Object #<Object> has no method 'rows'
Cụ thể, tôi đang tự hỏi nếu tôi đang sử dụng cú pháp không chính xác cho phương thức hàng của Thẻ hoặc nếu tôi chỉ hiểu nhầm điều gì đó. Cảm ơn trước!
Cập nhật:
Đối với một số lý do, @card.property
luôn hoạt động tốt, nhưng @card.any_method()
không bao giờ làm. Tôi đã nhận được xung quanh điều này tại thời điểm này bằng cách sử dụng tài sản, nhưng tôi rất thích nó nếu ai đó đã có thể giải thích hành vi này. Cảm ơn một lần nữa!
Cập nhật 2:
Tôi đang sử dụng http://brunchwithcoffee.com nếu đó là một sự giúp đỡ cho bất cứ ai, và đây là main.coffee
tập tin để hiển thị như thế nào dụ @card
đã được tạo ra và thông qua để xem.
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()
Thẻ '@' được tạo như thế nào? Như 'new exports.Card'? Nó có vượt qua bài kiểm tra '@card instanceof exports.Card' không? –
được cập nhật để hiển thị cách thẻ @ đang được tạo – mportiz08
Mẹo kiểu: Bạn có thể viết '{Card} = require 'models/card_model'' thay vì' Card = require (' models/card_model '). –