javascript - Backbone.sync 覆盖数据类型

标签 javascript jquery backbone.js

我正在构建一个使用 .CSV 文件作为 Backbone 模型数据源的应用程序。覆盖同步以使用数据类型“文本”而不​​是“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) );
},

最佳答案

与其改变 Backbone 的核心,或者复制整个同步方法只是为了改变数据类型,不如使用 jQuery 的一个不太知名的函数 ajaxPrefilter .

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

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

我不确定这是否适用于 zepto.js。

关于javascript - Backbone.sync 覆盖数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13572712/

相关文章:

javascript - jQuery.Callbacks - 删除匿名函数回调

Javascript 自定义滚动条错误

jquery - 如何在 MVC 4 中使用 jQuery 更新 List<Model>

javascript - 将 Backbone 模型和集合保存到 JSON 字符串

javascript - 如何使用引导表在每个表行下方显示一个 div?

javascript - 从 TinyURL 的缩短方法捕获响应时出错

jQuery - 带有CSS动画的淡入淡出错误

javascript - 以特定方式在图片数组上添加事件监听器

javascript - 如何通过主干中的 ajax 调用使用其模型渲染多个 View

javascript - 覆盖路由功能(Backbone.js)