私はipadファイルストレージからすべてのjs、css、およびイメージを読み込むhtmlラッパーアプリを持っています。したがって、UIWebViewには異なるベースhrefがロードされます。バックボーンでカスタムベースhrefを設定するには?
バックボーンデータの読み込みは、通常どおりサーバーに行われます。バックボーンにベースhrefを設定する方法はありますか?バックボーンはファイルストレージではなくサーバーにリアルタイムで反映されますか?たぶんグローバルな方法で?
私はipadファイルストレージからすべてのjs、css、およびイメージを読み込むhtmlラッパーアプリを持っています。したがって、UIWebViewには異なるベースhrefがロードされます。バックボーンでカスタムベースhrefを設定するには?
バックボーンデータの読み込みは、通常どおりサーバーに行われます。バックボーンにベースhrefを設定する方法はありますか?バックボーンはファイルストレージではなくサーバーにリアルタイムで反映されますか?たぶんグローバルな方法で?
オプションは、各コレクションやモデルのURLまたはurlRootプロパティをオーバーライドすることであるワンあなたが "再ベース"したいタイプ:
Article = Backbone.Model.extend({
url: function() {
return "http://myapiserver.com/articles/" + this.id;
// Or slightly better, use some global for the base url and build from that
}
});
モデルとコレクティすべてのモデルとコレクションCRUD操作によって呼び出されるBackbone.syncをオーバーライドしてurlが$にポンピングされる前にオーバーライドする方がよい場合があります。 ajax()。
// We'll call the "standard" Backbone.sync to do the real work, so grab a
// reference to it.
var oldSync = Backbone.sync;
Backbone.sync = function(method, model, options) {
var url = _.isFunction(model.url) ? model.url() : model.url;
if (url) { // If no url, don't override, let Backbone.sync do its normal fail
options = options || {};
options.url = "http://myapiserver.com" + url;
}
// Let normal Backbone.sync do its thing
return oldSync.call(this, method, model, options);
}
私はその正確なコードをテストしていませんが、それは近いと思います。
サーバーからストレージを使用するモデルを設定することを意味している場合:
window.modelObject = Backbone.Model.extend({
urlRoot: "/api/modelObject"
});
と収集のため:
window.ObjectCollection = Backbone.Collection.extend({
model: modelObject
});
window.UserObjectCollection = new ObjectCollection;
window.UserObjectCollection.url = "/api/modelObjects"