2

初めて質問するのでお手柔らかにお願いします。私は初めて(バックボーンとアンダースコアとともに)requirejsを使用しており、ビューでjQuery ajaxPrefilterメソッドを使用して、次のようにajax呼び出しのベースURLを設定しています...

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

このようにして、モデル/コレクションで「/notes」のような単純な URL を使用できます。現在、すべてのビューに 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

複数のルーターがある場合、それが本当に良い考えかどうかはわかりません...

このような場合、最初のバックボーンルーターを起動する直前に、メインアプリにjqueryinitsを配置しました...

myApp = {
    (....)


initialize : function(){

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

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