javascript - 如何在主干中设置自定义基本href?

标签 javascript backbone.js

我有一个 html 包装应用程序,从 ipad 文件存储加载所有 js、css 和图像。因此,UIWebView 加载了不同的基本 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
  }
});

如果您有很多模型和集合类型,并且希望重新设置它们的所有 url,那么覆盖 Backbone.sync(由所有模型和集合 CRUD 操作调用)可能会更好。在 url 被注入(inject) $.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);
}

我还没有测试过确切的代码,但我认为它(或接近的代码)应该可以工作。

关于javascript - 如何在主干中设置自定义基本href?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9925105/

相关文章:

javascript - ExtJS 4 在不使用回调的情况下等待 AJAX 请求的结果

javascript - 主干中的 OnBlur 事件

javascript - Backbone Collection 和 Marionette CompositeView 中未定义的模型原型(prototype)

javascript - Angular:如何根据不同模板的输入为特定组件中的变量赋值

javascript - 等号在错误的地方导致未知 token 异常

javascript - 如何在用户滚动页面时触发图像移动?

特定页面集的 Javascript 页面加载延迟

javascript - 使用 Requirejs 时,是否可以让优化器自动找到所有依赖项?

backbone.js - Backbone 关系不设置父模型,或反向关系_id

javascript - 单击 'PUT' 按钮后请求不会变为 'Update',而是变为 'POST'