我想我错过了一些非常基本的东西,但是以下失败了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 链中的一个对象上。
在这一点上,我什至很乐意处理视图或路由器中的登录操作(因为它似乎是过去的默认设置),但这些似乎都不起作用。
从文档中,动作处理程序应该存在的当前默认位置无论如何都是控制器,然后是路由,但是如果我删除目标并将 login() 添加到路由,我会收到另一个错误:(Nothing handled the event 'login'
我正在使用首先是目标,因为在我的应用程序中 /login 是一个单独的路由并且具有不同的控制器)。
解决方案和解决方法将不胜感激!