如何将jQuery ajaxPrefilter方法应用于所有require.js视图?
这是我第一次问问题,所以要温柔。我第一次使用requirejs(以及主干和下划线),我使用jQuery ajaxPrefilter方法来设置ajax调用的基本url,比如如何将jQuery ajaxPrefilter方法应用于所有require.js视图?,jquery,backbone.js,requirejs,underscore.js,Jquery,Backbone.js,Requirejs,Underscore.js,这是我第一次问问题,所以要温柔。我第一次使用requirejs(以及主干和下划线),我使用jQuery ajaxPrefilter方法来设置ajax调用的基本url,比如 $.ajaxPrefilter(function(options, originalOptions, jqXHR) { options.url = '//mysite.com' + options.url;}); 这样,我可以在模型/集合中使用简单的URL,如“/notes”。现在似乎我必须在每个视图中调用ajaxPrefi
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
options.url = '//mysite.com' + options.url;});
这样,我可以在模型/集合中使用简单的URL,如“/notes”。现在似乎我必须在每个视图中调用ajaxPrefilter。有没有什么地方我可以一次性调用它并将其应用于所有视图
谢谢。我做了和你一样的事:
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = App.config.getValue('api') + options.url;
});
如果你使用的是主干路由器,你可以像我一样把它放在初始化函数中
define([
'jquery',
'underscore',
'backbone',
'app',
],
function($, _, Backbone, App) {
return Backbone.Router.extend({
routes: {
'' : 'index'
},
start: function() {
Backbone.history.start({pushState: true});
}
initialize: function() {
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = App.config.getValue('api') + options.url;
});
}
});
});
App.config是我添加的,因此我可以为我的每个环境获得正确的url。我做了与您相同的事情:
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = App.config.getValue('api') + options.url;
});
如果你使用的是主干路由器,你可以像我一样把它放在初始化函数中
define([
'jquery',
'underscore',
'backbone',
'app',
],
function($, _, Backbone, App) {
return Backbone.Router.extend({
routes: {
'' : 'index'
},
start: function() {
Backbone.history.start({pushState: true});
}
initialize: function() {
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = App.config.getValue('api') + options.url;
});
}
});
});
App.config是我添加的,因此我可以为我的每个环境获得正确的url。如果您有多个路由器,我不确定这是否是一个好主意 在这种情况下,就在启动第一个主干路由器之前,我们在主应用程序中加入了jquery inits
myApp = {
(....)
initialize : function(){
// jQuery.ajax()cross-domain config
$.ajaxSetup({xhrFields: {withCredentials: true}});
// Start routers
DefaultRouter.initialize();
(....)
}
不确定这是否真的是一个好主意,如果你有一个以上的路由器 在这种情况下,就在启动第一个主干路由器之前,我们在主应用程序中加入了jquery inits
myApp = {
(....)
initialize : function(){
// jQuery.ajax()cross-domain config
$.ajaxSetup({xhrFields: {withCredentials: true}});
// Start routers
DefaultRouter.initialize();
(....)
}
谢谢,这很有效。我现在看到它在其他地方也能工作。你能解释一下为什么你选择把它放在路由器初始化功能中吗?我还没有找到任何好的理由拥有多个路由器。根据应用程序的配置方式,您可以将其放置在多个位置。在我的情况下,初始化函数不是唯一的地方,我同意。谢谢,这很有效。我现在看到它在其他地方也能工作。你能解释一下为什么你选择把它放在路由器初始化功能中吗?我还没有找到任何好的理由拥有多个路由器。根据应用程序的配置方式,您可以将其放置在多个位置。在我的情况下,初始化函数不是唯一的地方,我同意。