У меня серьезная проблема с Магионтой Магистра, которую я просто не могу понять. Может быть, мой человек Дерик Бейли может помочь мне. То, что я делаю, просто, по крайней мере, подумать. У меня есть макет (пожалуйста, игнорируйте неправильный отбор кофе сейчас).Регион Неопределенный в макете макета
class SearchLayout extends Backbone.Marionette.Layout
# template: _.template SearchResultsTemplate
template: Handlebars.compile SearchResultsTemplate
tagName: "section"
className: "search-layout"
ui:
"searchInput": ".search-input"
"saveTopic": ".save-this-topic"
regions:
resourcesRegion: ".resources-content"
А потом я связываю с моделью, которая привязана к этой схеме, в @searchResults
модели.
initialize: ->
@model.on "change:query", @setClasses, @
@model.on "change:query", @setResource, @
onRender: ->
# app.vent.trigger "view:rendered"
setTimeout =>
@setClasses()
@globalBindings()
@handlebarsHelpers()
@bindUIElements()
, 50
handlebarsHelpers: ->
# helpers specific to this view.
globalBindings: ->
# @model.on "change:query", @setResource, @
setResource: ->
@resources = new ResourcesCollection()
@resources.fetch
async: false
success: =>
@view = new ResourcesViews.collectionView
collection: @resources
@resourcesRegion.show @view
Я пытался сначала привязать к моим ресурсам с .on
, но это не работает хорошо, так что я решил пойти с успехом на выборку, как показано здесь.
Странная вещь, я имел это работает прекрасно, и даже делает (иногда) в первый раз, но после того, как я делать какие-либо изменения в моей модели поиска, я получаю эту ошибку:
Uncaught TypeError: Cannot call method 'show' of undefined
Вот мои взгляды:
define [
"backbone.marionette"
"jquery"
"underscore"
"backbone"
"text!templates/resources/resource.html"
], (Marionette, $, _, Backbone, ResourceViewTemplate) ->
class ResourceView extends Marionette.ItemView
className: "js-resource js-resource-view col-md-6"
tagName: "div"
template: Handlebars.compile ResourceViewTemplate
initialize: ->
onBeforeRender: ->
onRender: ->
class ResourcesEmptyView extends Marionette.ItemView
className: "js-resource-not-found not-found js-resource-view col-md-12"
tagName: "section"
template: "<h3>Sorry, nothing found for that search. Try another.</h3>"
initialize: ->
onBeforeRender: ->
onRender: ->
class ResourcesCollectionView extends Marionette.CollectionView
className: "js-resources js-resources-view list-unstyled"
tagName: "ul"
emptyView: ResourcesEmptyView
itemView: ResourceView
initialize: ->
onBeforeRender: ->
onRender: ->
exports =
collectionView: ResourcesCollectionView
individualView: ResourceView
странная вещь, мой @view.render().el
фактически определены и работают здорово! Он даже добавит к $('body')
без проблем.