3

私は ember.js 1.0.0-pre4、ember-data リビジョン 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'
})
4

2 に答える 2

2

私は今同じ問題を抱えていましたが、ここに私の小さなホットフィックスがあります:

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

テンプレートでは、id が設定されている場合にのみストアからアイテムをレンダリングします (それらのみがデータベースからのものです)。しかし、あなたはおそらくそれをすでに解決しました!

(リビジョン 12 を使用)

于 2013-03-19T16:13:21.050 に答える
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";
    }
})
})
于 2013-02-28T21:14:36.997 に答える