2013-02-13 71 views
3

我使用ember.js 1.0.0-PRE4,燼數據的修訂11.重複數據

我有以下型號:

App.DbProcess = DS.Model.extend({ 
    pid: DS.attr('number'), 
    backendStart: DS.attr('string'), 
    transactionStart: DS.attr('string'), 
    queryStart: DS.attr('string'), 
    stateChange: DS.attr('string'), 
    waiting: DS.attr('boolean'), 
    state: DS.attr('string'), 
    query: DS.attr('string') 
}) 

用下面的路線:

App.HomeDbProcessesRoute = Ember.Route.extend({ 
    model: function() { 
     return App.DbProcess.find(); 
    } 
}) 

然後我有一個使用{{#each controller}}{{/each}}呈現檢索到的所有進程的模板。但是,如果我導航到其他頁面(無需重新加載頁面)並返回進程頁面,則會再次檢索這些進程,並在頁面上顯示重複項。

編輯:我也嘗試過這一點,但沒有奏效:

DS.RESTAdapter.map('App.DbProcess', { 
    primaryKey: 'pid' 
}) 
+0

你的json是什麼樣的?它是否包含一個'id'屬性? – albertjan 2013-02-13 09:43:08

+0

我假設你沒有在你的JSON中爲主鍵返回唯一的'ID',所以Ember將會保留在數組中。這是一個要求,或者你可以在模型上用'primaryKey:'指定一個不同的主鍵。 Ember通過'ID'確定唯一的記錄。 – Wildhoney 2013-02-13 09:48:33

+0

編輯,它沒有工作。 – TheOnly92 2013-02-13 09:49:49

回答

0

事實證明,你可以做這樣的事情,以自定義主鍵全球

App.Adapter = DS.RESTAdapter.extend({ 
url: document.location.protocol+'//url-api.com', 
serializer: DS.RESTSerializer.extend({ 
    primaryKey: function(type) { 
     // If the type is `BlogPost`, this will return 
     // `blog_post_id`. 
     var typeString = (''+type).split(".")[1].underscore(); 
     return typeString + "_id"; 
    } 
}) 
}) 
2

我同樣的問題現在和這裏是我的小熱修復:

{{#if id}} 
<div> 
    {{title}} 
</div> 
{{/if}} 

在模板中,我只從商店中渲染商品,如果它有設置的id(只有那些來自數據庫)。但你已經解決它已經!

(使用修訂版12)

+0

簡單而有效:) – Abhiram 2014-03-07 09:18:26