0

初めての Ember アプリを作成する過程で、REST アダプターを使用して API に新しいリソースを POST する方法を理解できませんでした。

アプリはリソースのリストを正常に取得して表示するため、モデルが正しく定義されているようで、アダプターと 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}}
4

1 に答える 1

1

ストアで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 に答える