这是我第一次问一个问题,所以要温柔。我是第一次使用requirejs(连同Backbone和Underscore),我在视图中使用jQuery ajaxPrefilter方法为ajax调用设置基本URL,如此...
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
options.url = '//mysite.com' + options.url;});
这样我可以在我的模型/集合中使用像“/ notes”这样的简单网址。现在看来我必须在每个视图中放置ajaxPrefilter调用。在某个地方,我可以调用一次,并将其应用于所有视图吗?
谢谢。
答案 0 :(得分:4)
我和你做了同样的事情:
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = App.config.getValue('api') + options.url;
});
如果你正在使用Backbone.Router,你可以把它放在初始化函数中,就像我一样。
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。
答案 1 :(得分:0)
如果你有多个路由器,不确定它真的是个好主意......
在这种情况下,我们已经在我们的主应用程序中添加了jquery inits,就在启动第一个Backbone路由器之前......
myApp = {
(....)
initialize : function(){
// jQuery.ajax()cross-domain config
$.ajaxSetup({xhrFields: {withCredentials: true}});
// Start routers
DefaultRouter.initialize();
(....)
}