Entries

スポンサーサイト

カテゴリ:スポンサー広告
更新日:--------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

backbone.js - Modelの永続化。レガシーAPIへの対応。

カテゴリ:backbone.js
更新日:2012-12-24
backbone.js をお試し中。

> 正月休みは、backbone.js を試してみようかな。 - fintopo
> backbone.js - まずはViewとModelとの連携をやってみた。 - fintopo
> backbone.js - Modelの永続化を試す。 - fintopo

RESTfulでの永続化が(一部だけど)できたので、RESTfulでないAPIへの対応を試みる。
参考にしたのは、次のサイト。

> JavaScript : Backbone.js #5 - Modelのサーバ連携 - typeOf 'aki_mana'

派生クラスに sync を実装すればいいらしい。
で、やってみたのが、次のコード。
  var _Model = Backbone.Model.extend({
url_get: null,
url_update: null,
url_delete: null,
sync: function(method, model, options) {
switch (method) {
case 'create':
case 'update':
// 未実装
break;
case 'delete':
// 未実装
break;
default: // read
SNBinder.get(model.url_get, {key: model.id}, true, function(ret) {
// ここの処理は、まだ未検証
model.attributes = ret;
var success = options.success;
if (typeof success == 'function') {
success(model ret); // options.success に渡せばいい?(追記:2012年12月30日)
}
});
}
}
});
var message = _Model.extend({
url_get: '/api/getMessage',
url_update: '/api/updateMessage',
url_delete: '/api/deleteMessage',
・・・・・
sync は、だいたい共通になるだろうから、中間クラスを定義してみた。
違うなら、モデルを派生するときに、実装しなおせばいい。
APIの呼び出しには、既存アプリでも使っているSNBinderのgetとpostを使っている。
read(GET)しか実装してないけど、とりあえず呼び出せているみたい。

API呼び出し後の処理は、まだ未検証だけど、なんとかいけそうなので、次は、Router か。
今回の件が、一番気になってたんだよねぇ。思ったより順調だ。
スポンサーサイト

Appendix

プロフィール

いむら@fintopo いむら@fintopo

フリーのシステムエンジニア兼プログラマです。趣味はガーデニングとカメラ。2017年4月にα7IIを買いました。フルサイズ一眼初心者です。

このページのQRコード

季節暦

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。