如何为backbonejs的fetch方法设置jsonpCallback函数名?添加到问题是我也使用requireJS所以我试图不具有全局功能并遵循AMD模式。
我无法使用jquery中自动生成的方法名称的原因是api的开发人员我正在使用想要的缓存方法的静态名称。
示例代码
define([
'jquery',
'underscore',
'backbone',
'marionette',
'paginator',
'models/item'], function($, _, Backbone, Marionette, Paginator, modelItem) {
'use strict';
var PaginatedCollection = Paginator.requestPager.extend({
model: modelItem,
paginator_core: {
jsonpCallback : 'callbackFunc',
type: 'GET',
cache: true,
dataType: 'jsonp',
},
callbackFunc : function(data) {
console.log(data);
}
});
return PaginatedCollection;
});
错误消息
TypeError:callbackFunc不是函数
答案 0 :(得分:1)
覆盖您的提取以在请求中传递回调方法名称。
fetch: function(options) {
options || (options = {});
var data = (options.data || {});
options.dataType = 'jsonp';
options.jsonp = 'callbackFunc';
return Backbone.Collection.prototype.fetch.call(this, options);
}
答案 1 :(得分:1)
由于您要缓存结果(在浏览器中,也可能在服务器上),您还需要设置options.cache
param。
此外,参数为jsonpCallback
而不是jsonp
以下是您的同步覆盖功能应如下所示:
sync: function (method, model, options) {
options.timeout = 10000; // required, or the application won't pick up on 404 responses
options.dataType = 'jsonp';
options.jsonpCallback = 'callbackFunc';
options.cache = 'true';
return Backbone.sync(method, model, options);
}
NB:BackboneJS v1.0,未在0.9或更早版本中测试