ember.js - ¿Cuál es la diferencia entre sendAction y send?
(1)
He definido dos objetos personalizados, por lo que el primero extiende Ember.TextField y el segundo, Ember.Select. Cuando se desencadena la acción apropiada en Ember.TextField, realizo algún procesamiento y, si se cumple un requisito, propago la acción al controlador subyacente usando @sendAction("actionName")
.
Sin embargo, cuando intento hacer lo mismo usando Ember.Selecciono, obtengo el siguiente error:
Uncaught TypeError: Object [object Object] has no method ''sendAction''
y tiene que usar @get("controller").send("actionName")
lugar. Mi mentor reconoce que esta inconsistencia conduce al código de spaghetti y estoy de acuerdo con él. ¿Por qué no puedo llamar @sendAction
desde Ember.Select, que es una forma preferida que he llegado a entender, en Ember?
¿Cuál es la principal diferencia entre los dos?
sendAction
debe usarse cuando está dentro de un componente. Le permite violar los límites de un componente, si esa acción se define al conectar el componente. Esto ayuda a mantener el aislamiento garantizado por los componentes, pero aún permite que el componente envíe mensajes si desea escucharlo. https://guides.emberjs.com/v2.4.0/components/triggering-changes-with-actions/
{{my-component someInternalAction=someExternalAction}}
send
debe usarse en cualquier otro lugar.
Ember.Select
y Ember.TextField
son ambos componentes, por lo tanto, debe usar sendAction