events - Evento que no se desencadena en Marionette Itemview
triggers (2)
Estoy intentando activar un evento en la vista de elemento de marionetas (List.SendQuestion), sin embargo, no pude registrar el desencadenador en el controlador (como se ve a continuación)
Esencialmente, después de hacer clic en ''a.send'', se suponía que debía ocurrir un disparador y ''send_qn_view'' debería capturar el evento e imprimir el mensaje ''activado''. Pero eso no estaba sucediendo.
¿Puede alguien aconsejarme qué podría estar pasando mal aquí?
@Dailymuses.module "SidebarModule.List", (List, App, Backbone, Marionette, $, _) ->
List.Controller =
showSidebar: ->
send_qn_view = new List.SendQuestions
collection: Onethingaday.Public.friends
send_qn_view.on "itemview:ask:user", (itemview, question) ->
console.log(''triggered'') #THIS IS NOT EXECUTED
class List.SendQuestion extends Marionette.ItemView
template: "sidebar/list/templates/send_question"
className: ''qn_askee''
tagName: ''li''
events:
"click a.send" : "sendQuestion"
sendQuestion: (e) ->
e.preventDefault()
debugger #this debugger was triggered
@trigger "ask:user", @model
class List.SendQuestions extends Marionette.CompositeView
template: "sidebar/list/templates/send_questions"
itemView: List.SendQuestion
itemViewContainer: "ul.friends"
Editar: corrigió mi respuesta y actualizó mi violín
Lo siento por eso. Su sintaxis para el burbujeo de eventos es correcta. https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md#childview-event-bubbling-from-child-views
"itemview: *" evento burbujeo desde vistas de niños
Cuando una vista de elemento dentro de una vista de colección desencadena un evento, ese evento se abrirá paso a través de la vista de colección principal con "vista de elemento:" antes del nombre del evento.
Es decir, si una vista secundaria desencadena "do: something", la vista de colección principal activará "itemview: do: something".
Algo para notar. Marionette admite activadores de vista. Si su devolución de llamada solo está desencadenando un evento de visualización, puede eliminar el hash de evento y la devolución de llamada y acortar su código a este:
triggers: {
"click a.send": "ask:user"
}
Fiddle: http://jsfiddle.net/FRHkt/1/
Para cualquier persona nueva que venga a este ejemplo, con Marionette 2.x, itemview:*
para niños, las vistas se han reemplazado por childview:
activadores en la vista principal, y las vistas compuestas y compuestas también han cambiado sus parámetros de itemView
y itemViewContainer
a childView
y childViewContainer