2013-01-18 29 views
5

Ben 2 sorunları olan http://jsfiddle.net/pF2cF/6/ kodu: 1. tık "MyButton" 2. girmek App.indexController içinde clickButton işlevine gitmez metin alanında MyButton'u tıklarsanız önce tıklayın (eğer # 1 çözülürse)ember.js <düğmesi {{eylem}}></button> çalışmıyor düzgün

Onları çözmek için herhangi biri yardımcı olabilir mi? Kullanarak bir geçici çözümüm var, ancak kullanmakta sorun ne olduğundan emin değilim.

Teşekkürler!

parçacıkları 01/14/2013 tarihinde ana daldan ember.js kullanılarak, aşağıdaki gibidir kod:

<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"); 
    } 
}); 

cevap

18

Sen küçük hataların bir dizi yaptı. JSBin üzerinde bir çalışma sürümü koydum. herhangi bir başarısızlığı neden olmadı

üslup sorunları:

  • herhangi index yolları beyan etmek gerekmez.
  • Application numaralı telefondan boş bir ready yöntemine ihtiyacınız yoktur. Genel olarak, başlangıç ​​mantığını kontrolörlere de erişebileceğiniz ApplicationRoute#setupController'a yerleştirin.
  • Şablonunuzu, birden çok yol üzerinde tek bir şablonu paylaşmaya çalışmadığınız sürece rotayla aynı adı vermelisiniz. Bu durumda, myTemplate yerine index kullanmış olmanız gerekir. arızalarla ilgili

Sorunlar:

  • Kontrolör adları büyük harfle edilmelidir: Hedef akım kontrolörü ise App.IndexControllerApp.indexController
  • Bir hedef belirttikten edilmemelidir.
  • Aramanız render aramanız { controller: 'indexController' }'u belirtir. { controller: 'index' } olmalıdır.
+0

Teşekkürler! Bu harika çalışıyor! – xinqiu