2013-01-18 4 views
5

ho http://jsfiddle.net/pF2cF/6/ codice con 2 problemi: 1. Fare clic su "MyButton" non va alla funzione clickButton in App.indexController 2. Inserire nel campo di testo si innesca MyButton prima clic (se # 1 viene risolto)ember.js <pulsante {{azione}}></button> non funziona correttamente

Qualcuno può aiutarli a risolverli? Ho una soluzione alternativa usando, ma non sono sicuro di cosa non funzioni.

Grazie!

Il codice frammenti sono i seguenti, utilizzando ember.js dal suo ramo master sul 2013/01/14:

<script type="text/x-handlebars" data-template-name="myTemplate"> 
     <button {{action clickButton target="App.indexController"}} >MyButton1</button> 
     {{view App.MyView placeholder="Input something 1 and enter"}} 
    </script> 

App = Em.Application.create({ 
    ready: function() { 
    } 
}); 

App.Router.map(function() { 
    this.route("index", { path: "/" }); //master 01142013 syntax 
}); 
App.IndexRoute = Ember.Route.extend({ 
    renderTemplate: function() { 
    this.render('myTemplate', {controller: 'indexController'}); 
    } 
}); 

App.indexController = Ember.Controller.extend({ 
    clickButton: function() { 
    alert("clickButton"); 
    } 
}); 

App.MyView = Em.TextField.extend({ 
    insertNewline: function (evt) { 
    alert("enter pressed"); 
    } 
}); 

risposta

18

Lei ha fatto una serie di piccoli errori. Ho messo una versione funzionante su JSBin.

questioni stilistiche che non ha causato guasti:

  • Non c'è bisogno di dichiarare qualsiasi index percorsi.
  • Non è necessario un metodo vuoto ready su Application. In generale, inserire la logica di avvio in ApplicationRoute#setupController, dove si avrà anche accesso ai controller.
  • È necessario assegnare al modello il proprio nome con lo stesso nome del percorso, a meno che non si stia tentando di condividere un modello singolo su più percorsi. In questo caso, dovresti semplicemente utilizzare index anziché myTemplate.

Questioni relative ai fallimenti:

  • nomi controller dovrebbe essere capitalizzata: App.IndexController non App.indexController
  • Non si dovrebbe specificare una destinazione se la destinazione è il regolatore di corrente.
  • La vostra chiamata render specifica { controller: 'indexController' }. Dovrebbe essere { controller: 'index' }.
+0

Grazie! Funziona alla grande! – xinqiu

Problemi correlati