我正在使用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'
})
答案 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";
}
})
})