現在、Ember アプリで FixtureAdapter を使用していますが、RESTAdapter に切り替えると、URL が機能しなくなります。
このアプリはスコアキーピング タイプのものであり、ユーザーが Web に接続しなくてもすべてのスコアを記録できるようにしたいと考えています。ゲームが終了したら、必要に応じてすべてのデータをサーバーに保存できます。
ここで、Ember が「matches/:match_id」にルーティングしようとすると、サーバー/ストアに何もコミットしていないため ID が存在しないため、モデルにはまだ ID がなく、次のような URL が取得されます。 /マッチ/ヌル/ゲーム/ヌル
これは予想される動作ですか?もしそうなら、回避策はありますか?model.clientId を使用し、各ルートのモデル フックをオーバーライドして、存在する場合は ID を使用してストアからモデルを取得し、clientId にフォールバックすることを考えました。他のアイデアはありますか?
2013 年 3 月 10 日更新:
以下は私のニーズに合っているようで、(今のところ) ローカル ストレージと REST アダプターの間を行き来することを忘れることができます。
App.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.extend({
namespace: 'api/v1',
bulkCommit: true,
generateIdForRecord: function(store, record) {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
})
});
から取得した UUID 関数: JavaScript で GUID / UUID を作成しますか?