2

这是我第一次问问题,所以要温柔。我第一次使用requirejs(以及Backbone和Underscore),我正在使用jQuery ajaxPrefilter方法来设置ajax调用的基本url,就像这样......

$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
options.url = '//mysite.com' + options.url;});

这样我就可以在我的模型/集合中使用简单的 url,比如“/notes”。现在看来我必须将 ajaxPrefilter 调用放在每个视图中。有什么地方我可以调用它一次并将其应用于所有视图吗?

谢谢你。

4

2 回答 2

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。

于 2013-03-06T22:48:40.020 回答
0

如果您有多个路由器,不确定这真的是一个好主意...

在这种情况下,我们将 jquery inits 放在我们的主应用程序中,就在启动第一个 Backbone 路由器之前......

myApp = {
    (....)


initialize : function(){

    // jQuery.ajax()cross-domain config
    $.ajaxSetup({xhrFields: {withCredentials: true}});

    // Start routers
    DefaultRouter.initialize();
(....)
}    
于 2013-03-07T08:53:22.707 回答