Ember.js 导航时重复的数据,而不使用余烬数据重新加载页面

Ember.js 导航时重复的数据,而不使用余烬数据重新加载页面,ember.js,ember-data,Ember.js,Ember Data,我使用的是ember.js 1.0.0-pre4,ember数据版本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('stri

我使用的是ember.js 1.0.0-pre4,ember数据版本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'
})

事实证明,您可以这样做来全局自定义主键

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";
    }
})
})

我现在也遇到了同样的问题,下面是我的小补丁:

{{#if id}}
<div>
    {{title}}
</div>
{{/if}}
{{{#if id}
{{title}}
{{/if}
在模板中,我仅在设置了id(只有来自数据库的id)时才从存储中呈现项。但你可能已经解决了


(使用修订版12)

您的json看起来像什么?它是否包含一个
id
属性?我假设您没有在JSON中为主键返回唯一的
id
s,因此余烬将继续附加到数组中。这是一项要求,或者您可以在模型上使用
primaryKey:
指定不同的主键。Ember通过
ID
确定唯一记录。编辑后,它不起作用。
primaryKey
未按预期工作,您必须在JSON中发送
ID
字段,直到它被修复。这是不幸的,我想这就是为什么Ember数据还不是1.0…简单有效:)