coffeescript、Backbone、Brunch.io、および Chaplin JS についてさらに学習するために、自分用にテスト アプリケーションを作成していますが、行き詰まり、何が間違っているのかわかりません。
これは todo-view.coffee の私のコードです:
View = require 'views/base/view'
TodoItemView = require 'views/todo/todo-item'
TodoItemModel = require 'models/todo/todo-item-model'
TodoItemCollection = require 'models/todo/todo-collection'
# Site view is a top-level view which is bound to body.
module.exports = class TodoView extends View
# Template data stuff
container: 'todo-container'
tagName: 'ul'
className: 'todo-list'
template: require './templates/todo'
# Create a custom initialize method
initialize: ->
super
# Create a new Backbone Collection with some dummy data to store
@collection = new TodoItemCollection()
# Store the dummy data in the collection
data = ["working", "studying", "gym", "sleep"]
for todoItem in data
@collection.add( new TodoItemModel({ item: todoItem }) )
# Render the view
@render()
# Listen to data events
listen:
"add collection": "renderTodoList"
# When the template is initialized we need to load
# all the list items and append them to the container
renderTodoList: ->
# Loop over all the items
for model in @collection.models
todoItemView = new TodoItemView({ container: @$el, model: model })
問題は、イベント リスナー (リスナー オブジェクトで設定) がトリガーされないことです。したがって、@renderTodoList は呼び出されません。
ただし、 @initialize 関数から @renderTodoList を直接呼び出すと機能します。しかし、コレクションの「追加」イベントによって関数がトリガーされるようにします。
また、新しいデータ モデルを作成するループに @collection.trigger "add" を追加して、イベントを手動でトリガーしようとしました。しかし、これもうまくいきませんでした。
私が監督していること、または間違っていることについて何か考えはありますか?