在这种特殊情况下,我在创建或POST的方法中进行了硬编码,并将两个模拟选项都设置为false。应用此逻辑后,我得到了更短的方法:
// hard code in the emulation and method
Backbone.sync = function(method, model, options) {
options || (options = {});
var params = {type: 'POST', dataType: 'json'};
// Ensure that we have a URL.
if (!options.url) {
params.url = _.result(model, 'url') || urlError();
}
// Ensure that we have the appropriate request data.
if (options.data == null) {
params.contentType = 'application/json';
params.data = JSON.stringify(options.attrs || model.toJSON(options));
}
params.processData = false;
var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
model.trigger('request', model, xhr, options);
return xhr;
};
答案 0 :(得分:1)
通常,硬编码的已接受答案是以使您的方法可重用的方式进行。你本质上是在努力为自己减少工作量。
在这种情况下,像POST和JSON这样的部分都可以。您是否认为自己计划将方法从POST更改为GET?你打算写一个GET方法吗?然后将其设为参数或可配置选项。 (我非常怀疑你的情况,但我只是以此为例)
在获取数据和所有这些方面,您似乎可以测试。 (因为你只想让自己的脚离开地面)。只记得为每个不同的数据案例添加方法switch语句......
编辑:方法开关在第一个参数上创建一个switch语句,该语句定义了对数据执行的操作类型。这是一个例子:
Backbone.sync = function(method, model, options) {
options || (options = {});
var params = {type: 'POST', dataType: 'json'};
switch (method) {
case 'create':
//Let's go make data (POST)
...
break;
case 'update':
//let's go update our data
...
break;
case 'delete':
//Let's remove some data
...
break;
case 'read':
//let's go gather our data (GET)
...
break;
}
return xhr;
};