ember.js

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