2

Ember-DataをZendRestで動作させるためのサポートが必要です。

最初はZendFrameworkに精通しているので、RestAdapterのセットアップは簡単でした。telnetによる要求は、それが機能し、応答にも整形式のHTTPコードがあることを示しています。

EmberDataを使用したセットアップはもう少し複雑でした。Ubuntuを使用してVMをインストールし、Ruby 1.9.3をインストールしgit clone、ember-dataリポジトリを編集し、rakeを使用してJSファイルを生成しました。また、すべての依存関係を解決するためにバンドラーをインストールしました。エラーなしで動作するようです。初めてでした。私はルビーに精通していません。

残念ながら、機能していないようです。私のテストアプリでは、Firebugで残りのリクエストが表示されます。レスポンスも良さそうです。しかし、オブジェクトはまだ空です。

応答:

[{"id":"1","user":"testuser","password":"123","mail":"my@me.com","role":"GUEST","active":"1","hash":null,"last_login":null}]

応答ヘッダー:

Cache-Control       no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection          Keep-Alive
Content-Encoding    gzip
Content-Length      121
Content-Type        application/json; charset=utf-8
Date                Wed, 20 Jun 2012 10:49:38 GMT
Expires             Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive          timeout=15, max=99
Pragma              no-cache
Server              Apache
Vary                Accept-Encoding
X-Powered-By        PHP/5.3.13
X-UA-Compatible     IE=Edge,chrome=1

私のアプリ:

    // my script
    App = Em.Application.create();

    App.store = DS.Store.create({
      revision: 4,
      adapter: DS.RESTAdapter.create({ bulkCommit: false, namespace: 'rest' })
    });

    App.User = DS.Model.extend({
        id: DS.attr('number'),
        user: DS.attr('string'),
        password: DS.attr('string'),
        mail: DS.attr('string'),
        role: DS.attr('string'),
        active: DS.attr('number'),
        hash: DS.attr('string'),
        last_login: DS.attr('date')
    });

    App.postsController = Em.ArrayController.create({
        content: App.store.findAll(App.User)
    });


    // my html page
    <script type="text/x-handlebars">
        {{#each App.postsController}}
           <li>{{user}}</li>
        {{/each}}
    </script>

私は何が間違っているのですか?ember-data.jsが機能しているかどうかわかりません。

4

1 に答える 1

7

https://github.com/emberjs/data/issues/132

DS.RESTAdapterにはルート要素が必要です。そのような:

{
  users: [{
    "id":"1",
    "user":"test user",
    "password":"123",
    "mail":"my@me.com",
    "role":"GUEST",
    "active":"1",
    "hash":null,
    "last_login":null
  }]
}

これは、DS.RESTAdapterがサイドローディングをサポートしているためです。残念ながら、構成できません。この要件を回避する唯一の方法は、独自のアダプターをロールすることです。

于 2012-06-20T14:24:34.013 に答える