导航时没有使用ember-data重新加载页面的重复数据

时间:2013-02-13 09:40:36

标签: ember.js ember-data

我正在使用ember.js 1.0.0-pre4,ember-data revision 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'
})

2 个答案:

答案 0 :(得分:2)

我现在遇到了同样的问题,这是我的小问题:

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

在模板中,只有在设置了id时才从商店中呈现项目(只有那些来自数据库)。但你已经可以解决它了!

(使用修订版12)

答案 1 :(得分: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";
    }
})
})