我正在构建一个使用.CSV文件作为Backbone模型的数据源的应用程序。覆盖同步以使用dataType“text”而不是“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) );
},
答案 0 :(得分:1)
不是改变主干的核心,也不是仅仅为了改变dataType而复制整个同步方法,你可以使用一个名为ajaxPrefilter的jQuery不是众所周知的函数。
Witch允许您在创建之前更改ajax请求。非常需要的功能。
jQuery.ajaxPrefilter(function( options ) {
options.dataType = "mynewdatatype";
});
我不确定这是否可以使用zepto.js。