2013-09-29 9 views
24

Per esempio io ho un controller come questo:metodo chiamando da azione del controllore in emberjs

App.theController = Ember.ArrayController.extend({ 
methodA:fucntion(){}, 
actions:{ 
    methodB:function(){}, 
    methodC:function(){} 
} 
}); 

mie domande è:

  1. Come può MethodB chiamare methodC
  2. Come può Methoda chiamare MethodB

risposta

42

È necessario utilizzare this.send([methodName]) per ottenere i metodi denominati correctl y:

var App = Ember.Application.create({ 
    ready: function() { 
    console.log('App ready'); 
    var theController = App.theController.create(); 
    theController.send('methodC'); 
    } 
}); 

App.theController = Ember.ArrayController.extend({ 
    methodA:function(){ 
    //How can methodA calling methodB 
    this.send('methodB'); 
    console.log('methodA called'); 
    }, 
    actions:{ 
    methodB:function(){ 
     //How can methodB calling methodC 
     this.send('methodC'); 
     console.log('methodB called'); 
    }, 
    methodC:function(){ 
     console.log('methodC called'); 
    } 
    } 
}); 

Ecco un semplice jsbin come un parco giochi.

Spero che aiuti.

+0

Non esattamente la stessa domanda, ma non riesco ad aggiornare la mia app. Devo chiamare le azioni, ma restituiscono qualcosa. vedi http://jsbin.com/OreraGE/1/edit Probabilmente è semplice, ma sono bloccato qui ... –

+0

@ sly7_7 attualmente AFK lo guarderà appena arrivo a casa :) – intuitivepixel

+1

@ sly7_7, Sembra che giocare con le azioni è una cosa oneway, che significa che non viene passato nessun valore di ritorno, per farlo funzionare duro è possibile definire il metodo direttamente sull'oggetto e al di fuori dell'hash delle azioni, e invocare il metodo direttamente con 'this.methodC()' vedere ecco cosa intendo con questo: http://jsbin.com/eBegIPAy/1/edit – intuitivepixel

Problemi correlati