0

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

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

我正在使用 1.0.0-rc.1 版本的 Ember 和我今天克隆和构建的 Ember Data 版本。

以下是我的代码,我会感谢任何可以帮助我找出问题所在的人。

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}}
4

1 回答 1

1

我相信只有在 store 上调用 commit() 后,模型才会持久化。

显然,如果不构建 REST api,我无法完全测试,但使用夹具适配器,我可以在我的控制器上调用 save() 方法,该方法会推送 @store.commit()。对于休息适配器,这应该产生 POST 事件。

请看看这个 jsFiddle:http: //jsfiddle.net/nrionfx/uqRG5/5/

  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()
于 2013-03-12T17:44:06.500 回答