Ember Data(REST适配器)创建Model-instance但不POST

时间:2013-03-12 16:21:10

标签: coffeescript ember.js ember-data

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

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

我使用的是Ember的1.0.0-rc.1版本以及我今天克隆和构建的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}}

1 个答案:

答案 0 :(得分:1)

我相信只有在商店调用commit()后才会保留模型。

显然,如果不构建REST api,我无法完全测试,但是使用fixture适配器,我可以在我的控制器上调用save()方法,这会推送@ store.commit()。对于rest适配器,这应该产生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()