Если он работает так, как вы хотите, то это правильно :), но есть некоторые изменения, которые вы можете сделать, чтобы воспользоваться преимуществами определенных функций CoffeeScript + Backbone вместе.
Первый - объявление класса, вы можете написать его таким образом, чтобы быть более кратким.
class Pages extends Backbone.Collection
Будет сгенерирован правильный JavaScript.
Еще одно изменение, которое вы могли быmake должен заменить все экземпляры this.
на @
.Вы бы набрали от 5 символов до 1. 1. 1010 *
Вот переписывание того, что вы опубликовали с этими изменениями.Надеюсь, я ничего не пропустил.
class Page extends Backbone.Model
displayHTML: (model, response) ->
$("#content").html(model.get('html'))
class Pages extends Backbone.Collection
model: Page
url: "/pages"
current_page: '1-1'
initialize: (models, options) ->
@fetch(success: @displayFirst)
displayFirst: (collection, response) ->
model = collection.get(collection.current_page)
model.fetch(success: model.displayHTML)
nextPage: ->
id = "#{new Number(@current_page[2]) + 1}-1" #todo - this will break with 9+
@gotoPage(id)
previousPage: ->
id = "#{new Number(@current_page[2]) - 1}-1" #todo - this will break with 9+
@gotoPage(id)
gotoPage: (id) ->
@current_page = id
if model = @get(id)
model.fetch(success: model.displayHTML)
else
alert("Eh nooo")
class AppView extends Backbone.View
el: $('body')
events:
"click #next-page": "nextPage"
"click #previous-page": "previousPage"
initialize: ->
@pages = new Pages(null, {view:@})
nextPage: -> @pages.nextPage()
previousPage: -> @pages.previousPage()
appView = new AppView