【问题标题】:Ember Data (REST Adapter) creates Model-instance but does not POSTEmber 数据(REST 适配器)创建模型实例但不发布
【发布时间】:2013-02-28 06:48:08
【问题描述】:

在编写我的第一个 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}}

【问题讨论】:

    标签: coffeescript ember.js ember-data


    【解决方案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()
    

    【讨论】:

    • 感谢您提示我需要提交,我发现这个答案非常符合我的问题:stackoverflow.com/a/14490259/677985 不过,从 MVC 分离的角度来看,您的方式似乎更清晰,我会当然也要看看 ArrayController。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多