我正在构建一个使用 .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) );
},