5

http://jsfiddle.net/pF2cF/6/コードに2つの問題があります:1。[MyButton]をクリックしてもApp.indexControllerのclickButton関数に移動しません2.テキストフィールドに入力すると、最初にMyButtonのクリックがトリガーされます( #1解決される)

誰かがそれらを解決するのを手伝うことができますか?を使用することによる回避策はありますが、を使用することの何が問題になっているのかわかりません。

ありがとう!

2013年1月14日のマスターブランチのember.jsを使用した、コードスニペットは次のとおりです。

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

1 に答える 1

18

あなたはいくつかの小さな間違いを犯しました。作業バージョンをJSBinに置きました。

失敗を引き起こさなかった文体の問題:

  • indexルートを宣言する必要はありません。
  • readyに空のメソッドは必要ありませんApplication。一般に、スタートアップ ロジックはApplicationRoute#setupController、コントローラにもアクセスできる に配置します。
  • 複数のルートで単一のテンプレートを共有しようとしている場合を除き、テンプレートにルートと同じ名前を付ける必要があります。この場合、indexではなくを使用する必要がありmyTemplateました。

失敗に関連する問題:

  • コントローラー名は大文字にする必要がありますApp.IndexControllerApp.indexController
  • ターゲットが現在のコントローラーである場合は、ターゲットを指定しないでください。
  • あなたのrender呼び出しは を指定します{ controller: 'indexController' }。である必要があります{ controller: 'index' }
于 2013-01-18T07:13:19.170 に答える