【问题标题】:Backbone.sync to overwrite dataTypeBackbone.sync 覆盖 dataType
【发布时间】:2012-11-26 20:35:08
【问题描述】:

我正在构建一个使用 .CSV 文件作为主干模型数据源的应用程序。覆盖同步以使用数据类型“文本”而不​​是“json”的最佳方法是什么?寻找最佳实践等...

不幸的是,Backbone.sync 使用的“dataType”参数是硬编码的......并且不响应 options.dataType。有问题的代码可以在带注释的源代码中看到 - http://backbonejs.org/docs/backbone.html#section-166

这是我在我的模型上创建的同步方法。其中大部分是直接从 Backbone.sync 复制粘贴。我的模型也是只读的。

sync: function(method, model, options){

    //overwrite sync to read a .CSV document. if
    //the default Backbone sync would let you
    //specify the "dataType" property, this wouldn't
    //be necessary.

    if(method === 'read'){

        options || (options = {});

        var success = options.success;
        options.success = function(resp, status, xhr) {
            if (success) success(json, status, xhr);
        };

        var params = {type: 'GET', dataType: 'text', url: this.url};
        return $.ajax(_.extend(params, options));
    }
},

我已覆盖“解析”来处理 CSV 响应。

parse: function(data, xhr){
    return $jQuery.parseJSON( CSVParser.toJSON(data) );
},

【问题讨论】:

    标签: javascript jquery backbone.js


    【解决方案1】:

    您可以使用 jQuery 的一个不太知名的函数,称为 ajaxPrefilter,而不是更改主干的核心,或复制整个同步方法来更改数据类型。

    Witch 允许您在发出之前更改 ajax 请求。非常需要的功能。

    jQuery.ajaxPrefilter(function( options ) {
        options.dataType = "mynewdatatype";
    });
    

    我不确定这是否可以使用 zepto.js。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 2013-05-04
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多