我想我可能误解了Ember挂钩路线,视图和模板的方式,但我无法弄清楚以下结果是错误:
未捕获错误:没有处理事件'createUser'。
我的文件如下:
Javascript角/ router.js.coffee
App.Router.map ->
@resource 'account', ->
@route 'index', path: '/'
Javascript角/路由/ account_router.js.coffee
App.AccountRoutes = Ember.Route.extend
model: -> App.User.find()
Javascript角/控制器/ account_controller.js.coffee
App.AccountController = Ember.ObjectController.extend
createUser: ->
App.User.createRecord
field1: @get('field1')
/ etc
Javascript角/视图/ account_view.js.coffee
App.AccountView = Ember.View.extend
templateName: 'account'
Javascript角/模板/帐户/ index.emblem
form.form submit="createUser"
/ fields
答案 0 :(得分:3)
我认为你错过了actions
哈希。
模板中的操作如:
<script type="text/x-handlebars" id="foo">
<div {{action "doFoo"}}>Click here</div>
</script>
需要出现在操作对象内的相应控制器或路径中:
App.FooController = Ember.ObjectController.extend({
actions: {
doFoo: function() {
alert('Foo');
}
// ... more actions here
}
});
在您的情况下,我认为您需要更新到以下内容:
App.AccountController = Ember.ObjectController.extend
actions:
createUser: ->
App.User.createRecord
field1: @get('field1')
答案 1 :(得分:1)
我不是一个coffescript老兄,但你的路线声明中有一个错字:路线应该是路线
你说:
App.AccountRoutes = Ember.Route.extend
model: -> App.User.find()
应该是:
App.AccountRoute = Ember.Route.extend
model: -> App.User.find()
如果您尝试访问帐户资源的索引路由,则不必在路由器中明确定义它。因此,您可以使用AccountIndexController,AccountIndexRoute和帐户/索引模板来访问它。
答案 2 :(得分:0)
Coffeescript对缩进非常敏感,可能会误解你的控制器。试试这个:
App.AccountController = Ember.ObjectController.extend
createUser: ->
App.User.createRecord
field1: @get('field1')
/ etc