Backbone Marionette で大きな問題が発生しており、それがまったく理解できないようです。たぶん、私の男であるデリック・ベイリーが私を助けてくれるでしょう。私がやっていることは単純です、少なくとも1人はそう思うでしょう。レイアウトがあります (今のところ、不適切なコーヒーのインデントは無視してください)。
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
奇妙なことに、 my@view.render().el
は実際に定義されており、うまく機能しています! に追加して$('body')
も問題ありません。