2012-06-20 138 views
2

需要幫助獲取Ember-Data與Zend Rest一起工作。Ember數據填充記錄

起初,我對Zend Framework很熟悉,所以Rest適配器很容易設置。 telnet請求顯示它的工作原理和響應也有格式良好的HTTP代碼。

Ember Data的設置稍微複雜一些。我在Ubuntu上安裝了一個虛擬機,安裝了Ruby 1.9.3,git clone編輯了ember-data存儲庫,並用rake生成了JS文件。我還安裝了捆綁器來解決所有的依賴關係。似乎沒有錯誤的工作。 這是我第一次。我不熟悉ruby。

不幸的是,它似乎沒有工作。在我的測試應用程序中,我看到了螢火蟲的其餘請求。答案看起來也不錯。但對象仍然是空的。

響應:

[{"id":"1","user":"testuser","password":"123","mail":"[email protected]","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是否有效。

+0

乍一看,您不需要在User模型中聲明id屬性。 –

+0

我刪除了id屬性desclartion但沒有效果。我現在用$ getJSON內部控制器通過將數據推送到ember模型來測試剩下的接口。這工作正常,並且數據被填充。 但我想使用Ember Data。 – cuber

回答

7

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

DS.RESTAdapter需要一個根元素。如:

{ 
    users: [{ 
    "id":"1", 
    "user":"test user", 
    "password":"123", 
    "mail":"[email protected]", 
    "role":"GUEST", 
    "active":"1", 
    "hash":null, 
    "last_login":null 
    }] 
} 

這是因爲DS.RESTAdapter支持側面加載。不幸的是,它不可配置。圍繞這個要求的唯一方法是推出自己的適配器。

+0

比我快44秒;)。我認爲這個答案很好:)所以+1 –

+0

Mille grazie。在這個問題上搜索整個一天,但沒有找到它。 – cuber

+1

對於我''用戶:''必須用引號來工作,比如''用戶':' –