0

我想我可能误解了 Ember 连接路由、视图和模板的方式,但我无法弄清楚以下结果是否会导致错误:

未捕获的错误:没有处理事件“createUser”。

我的文件如下:

javascripts/router.js.coffee

App.Router.map ->
  @resource 'account', ->
    @route 'index', path: '/'

javascripts/routes/account_router.js.coffee

App.AccountRoutes = Ember.Route.extend
  model: -> App.User.find()

javascripts/controllers/account_controller.js.coffee

App.AccountController = Ember.ObjectController.extend
  createUser: ->
    App.User.createRecord
      field1: @get('field1')
      / etc

javascripts/views/account_view.js.coffee

App.AccountView = Ember.View.extend
  templateName: 'account'

javascripts/模板/帐户/index.emblem

form.form submit="createUser"
  / fields
4

3 回答 3

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')
于 2013-10-29T12:34:40.430 回答
1

我不是咖啡师,但你的路线声明中有一个错字:路线应该是路线

你把:

App.AccountRoutes = Ember.Route.extend
  model: -> App.User.find()

应该:

App.AccountRoute = Ember.Route.extend
 model: -> App.User.find()

如果您尝试访问帐户资源的索引路由,则不必在路由器中明确定义它就在那里。因此,您将使用您的 AccountIndexController、AccountIndexRoute 和帐户/索引模板来访问它。

于 2013-10-29T03:59:42.483 回答
0

Coffeescript 对缩进非常敏感,可能会误解您的控制器。尝试这个:

App.AccountController = Ember.ObjectController.extend   
  createUser: ->
    App.User.createRecord
      field1: @get('field1')
      / etc
于 2013-10-28T22:11:00.960 回答