ventajas ember desventajas create component caracteristicas javascript ember.js publish-subscribe ember-controllers

javascript - desventajas - ember.js caracteristicas



Acciones EmberJS: llama una acción de otra cuando está envuelta en `acciones` (1)

¿Cómo se llama una acción de otra acción cuando se envuelve dentro de las actions en un controlador EmberJS?

Código original que usa la forma ahora obsoleta de definir acciones:

//app.js App.IndexController = Ember.ArrayController.extend({ // properties /* ... */ // actions actionFoo: function() { /* ... */ this.actionBar(); }, actionBar: function() { /* ... */ } }); //app.html <div class="foo" {{action actionFoo this}}> <div class="bar" {{action actionBar this}}>

Sin embargo, con EmberJS 1.0.0, obtenemos una advertencia de obsolescencia, que dice que las acciones deben colocarse dentro de un objeto de acciones dentro del controlador, en lugar de colocarse directamente dentro del controlador, como se indicó anteriormente.

Actualizando el código, de acuerdo con las recomendaciones:

//app.js App.IndexController = Ember.ArrayController.extend({ // properties /* ... */ // actions actions: { actionFoo: function() { /* ... */ this.actionBar(); //this.actionBar is undefined // this.actions.actionBar(); //this.actions is undefined }, actionBar: function() { /* ... */ } } }); //app.html <div class="foo" {{action actionFoo this}}> <div class="bar" {{action actionBar this}}>

Sin embargo, encuentro que no es posible que una función definida dentro de las acciones llame a otra, ya que this objeto ya no es el controlador.

¿Cómo puedo hacer esto?


Puede usar el método send(actionName, arguments) .

App.IndexController = Ember.ArrayController.extend({ actions: { actionFoo: function() { alert(''foo''); this.send(''actionBar''); }, actionBar: function() { alert(''bar''); } } });

Aquí hay un jsfiddle con esta muestra http://jsfiddle.net/marciojunior/pxz4y/