ember.js

ember.js - Acción de envío del componente Ember a la ruta



(1)

Para una respuesta corta, puede usar el complemento ember-route-action-helper .

<button {{action (route-action ''onButtonClick'')}}>ClickToCallRouteAction</button>

Hay tres formas de comunicación de acciones,

1. Estilo de funciones clásicas de estilo antiguo, es decir, pasar el nombre de la función como una cadena de arriba a abajo. y en todos los lugares necesitamos definir la misma función y proporcionar. Use sendAction para hacer burbujas. y send burbuja de método desde el controlador a la jerarquía de ruta.

Esto no es alentado. Ejemplo de twiddle de acciones de estilo clásico

2. Acciones de cierre Use la función de ayuda de action lugar de solo cadena. para que no necesites definirlo en todas partes. twiddle de muestra para el estilo de acciones de cierre

3. Complemento ember-route-action-helper Puede llamar directamente a action route desde cualquier lugar literalmente simplemente envolviendo funciones usando route-action helper.

Twiddle de muestra

Comparación entre el estilo clásico y el estilo de cierre y ¿Por qué es preferible el cierre?

  • En el estilo clásico, debe definir acciones en cada nivel y usar sendAction para activar la acción en cada nivel hasta que salga completamente de su anidamiento.
  • Puede devolver valor en acciones de cierre pero no en acciones clásicas.
  • Puede curry valores en acciones de cierre pero no en acciones clásicas.
  • Las acciones de cierre fallan inmediatamente si no se encuentra la acción. pero las acciones clásicas por diseño, provocarían perezosamente errores solo en los valores de invocación.
  • Complejidad de codificación como ¿quién manejará las acciones y hará la lógica de negocios?
  • En el cierre, puede combinar acción y ayuda mutua para establecer una propiedad con valor. onclick=(action (mut title) value="titlevalue")
  • En cierre, puede especificar el objeto de destino para invocar la función. (action ''save'' target=session) miraría el hash de actions en el objeto de session lugar del contexto actual.

Algunos de los prometedores artículos sobre esto,
- artículo miguelcamba ember-closure-actions-in-depth
- emberigniter artículo send-closure-actions-up-data-owner
- Artículo de lanzamiento del blog 1.13 de emberjs
- astillero - ember-best-practice-stop-bubbling-and-use-closure-actions
- blog del mapa de Ember ¿Por qué ayudante de acción?
- blog de Alisdair McDiarmid ember-closure-actions-have-return-values
- blog de alexdiliberto ember-closure-actions de ascuas

Tengo dos componentes y uno sentado en otro. Necesito enviar un evento a la ruta principal desde el componente secundario (ambos componentes se usan en la misma ruta)

Avísame si hay alguna forma estándar de hacerlo.