Coffeescript 余烬数据(REST适配器)创建模型实例,但不发布

Coffeescript 余烬数据(REST适配器)创建模型实例,但不发布,coffeescript,ember.js,ember-data,Coffeescript,Ember.js,Ember Data,在编写我的第一个Ember应用程序的过程中,我还没有弄清楚如何使用REST适配器将新资源发布到我的API中 应用程序成功地检索并显示了一个资源列表,因此我的模型似乎定义正确,适配器和API之间的通信正常。当我单击CreateBugView按钮时,新实例显示在列表中,因此这部分也可以工作。但是,我可以在inspector中看到,没有对API发出POST请求,并且当我刷新页面时,可以预见,该实例在任何地方都看不到 我使用的是1.0.0-rc.1版本的余烬和我今天克隆和构建的余烬数据版本 下面是我的代

在编写我的第一个Ember应用程序的过程中,我还没有弄清楚如何使用REST适配器将新资源发布到我的API中

应用程序成功地检索并显示了一个资源列表,因此我的模型似乎定义正确,适配器和API之间的通信正常。当我单击CreateBugView按钮时,新实例显示在列表中,因此这部分也可以工作。但是,我可以在inspector中看到,没有对API发出POST请求,并且当我刷新页面时,可以预见,该实例在任何地方都看不到

我使用的是1.0.0-rc.1版本的余烬和我今天克隆和构建的余烬数据版本

下面是我的代码,如果有人能帮我找出问题所在,我将不胜感激

App = Em.Application.create()

# Templates

require 'templates/application'
require 'templates/index'

# Models

App.Bug = DS.Model.extend
  name: DS.attr 'string'

# Views

App.CreateBugView = Em.View.extend
  tagName: 'button'

  click: (evt) ->
    bug = App.Bug.createRecord
      name: 'Sean'

# Routes

App.IndexRoute = Em.Route.extend
  model: -> App.Bug.find()
  setupController: (controller, bugs) ->
    controller.set 'bugs', bugs
    controller.set 'App', App

# Store

App.Store = DS.Store.extend
  revision: 12

# Router

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

App.initialize()
索引模板

<ul>
  {{#each bugs}}
    <li>{{name}}</li>
  {{/each}}
</ul>

{{#view App.CreateBugView}}
  Create new bug!
{{/view}}
    {{{#每个bug}
  • {{name}}
  • {{/每个}}
{{{#view App.CreateBugView} 创建新的错误! {{/view}
我认为只有在存储上调用commit()时,模型才会持久化

显然,如果不构建RESTAPI,我无法进行完全测试,但是使用fixture适配器,我可以在我的控制器上调用save()方法,从而推送@store.commit()。对于rest适配器,这将生成POST事件

请看一下这个JSFIDLE:


谢谢你告诉我需要提交,我发现这个答案与我的问题非常吻合:从MVC分离的角度来看,你的方式似乎更干净,不过,我肯定也会研究ArrayController。
  click: (evt) ->
    bug = App.Bug.createRecord
      name: 'Sean'
    @.get('controller').save()
App.IndexController = Em.ArrayController.extend
    save: ->
        console?.log("Commiting changes to store")
        @store.commit()