Ember.js / Emblem.js未捕获错误:没有处理事件'createUser'

时间:2013-10-28 21:56:50

标签: javascript ember.js coffeescript

我想我可能误解了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

3 个答案:

答案 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