Я только начал работать с магистралью, и я подумал Я был знаком со всеми предостережениями, связанными с привязкой данных.Оказывается, я не.Если у кого-то есть идеи, почему следующая коллекция не связана с IndexView, я был бы очень признателен.(Пробовал как вручную в браузере, так и в chrome консоли ... неуправляемый вызов console.log подтверждает, что render () не запускается)
С консоли попытка вызова:
window.router.project_view.options.projects.create({name: 'TestProject'})
Проект успешно создан, но нет вызова render ()
Маршрутизатор:
class Backbonescaffolddemo.Routers.CalendarsRouter extends Backbone.Router
routes:
"" : "index"
index: () ->
@projects = new Backbonescaffolddemo.Collections.ProjectsCollection()
...
@project_view = new Backbonescaffolddemo.Views.Projects.IndexView(projects: @projects)
@task_view = new Backbonescaffolddemo.Views.Tasks.IndexView(tasks: @tasks)
...
$('#projects').html(@project_view.render().el)
Коллекция / Модель:
class Backbonescaffolddemo.Models.Project extends Backbone.RelationalModel
paramRoot: 'project'
class Backbonescaffolddemo.Collections.ProjectsCollection extends Backbone.Collection
model: Backbonescaffolddemo.Models.Project
url: '/projects'
Вид:
Backbonescaffolddemo.Views.Projects ||= {}
class Backbonescaffolddemo.Views.Projects.IndexView extends Backbone.View
template: JST["backbone/templates/projects/index"]
id: "projects"
initialize: () ->
@options.projects.fetch()
_.bindAll(this, 'addOne', 'addAll', 'render')
@options.projects.bind('reset', @addAll)
@options.projects.bind('save', @addAll)
@options.projects.bind('change', @addAll)
@options.projects.bind('change', @render)
@options.projects.bind('create', @render)
addAll: () ->
@options.projects.each(@addOne)
addOne: (project) ->
view = new Backbonescaffolddemo.Views.Projects.ProjectView({model: project})
$(@el).append(view.render().el)
render: ->
console.log 'render called'
$(@el).html(@template(projects: @options.projects.toJSON()))
return this