events triggers marionette

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" }

http://lostechies.com/derickbailey/2012/05/15/workflow-in-backbone-apps-triggering-view-events-from-dom-events/

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