本当に基本的なものが欠けていると思いますが、以下はThe action 'login' did not exist on App.AppController
.
テンプレート:
<h2>Click the button and watch the console</h2>
<button type="button" {{action login target="App.AppController"}}>Log in</button>
コントローラ:
App.AppController = Ember.Controller.extend({
login: function() {
// never gets here
debugger;
},
send: function() {
// or even here
debugger;
}
});
JSBin: http://jsbin.com/okuqiv/5/edit (これは最新の Ember を指していますが、1.0-rc2 と同じ動作です。これは私が数日間使用しているバージョンです。以前のバージョンで試しました)。
デバッグ時に、どういうわけかコントローラ mixin が公開すべきすべての関数を公開していないようです -- login() は私が追加した関数ですが、send() は Ember 関数です。また、get() などの他の関数も欠落しています。
私のアプリでは login() 関数がオブジェクト App.AppController.prototype に存在し、JSBin では mixin チェーン内のオブジェクトの 1 つに存在することがわかりました。
この時点で、ビューまたはルーター (過去にはデフォルトだったようです) でログイン アクションを処理したいと思いますが、それらのどれも機能していないようです。
ドキュメントによると、アクションハンドラーが存在する現在のデフォルトの場所はコントローラーであり、次にルートですが、ターゲットを削除して login() をルートに追加すると、別のエラーが発生します: Nothing handled the event 'login'
(私は私のアプリでは /login は別のルートであり、別のコントローラーを持っているためです)。
解決策と回避策は非常に高く評価されます!