Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将jQuery ajaxPrefilter方法应用于所有require.js视图?_Jquery_Backbone.js_Requirejs_Underscore.js - Fatal编程技术网

如何将jQuery ajaxPrefilter方法应用于所有require.js视图?

如何将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

这是我第一次问问题,所以要温柔。我第一次使用requirejs(以及主干和下划线),我使用jQuery ajaxPrefilter方法来设置ajax调用的基本url,比如

$.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();
(....)
}    

谢谢,这很有效。我现在看到它在其他地方也能工作。你能解释一下为什么你选择把它放在路由器初始化功能中吗?我还没有找到任何好的理由拥有多个路由器。根据应用程序的配置方式,您可以将其放置在多个位置。在我的情况下,初始化函数不是唯一的地方,我同意。谢谢,这很有效。我现在看到它在其他地方也能工作。你能解释一下为什么你选择把它放在路由器初始化功能中吗?我还没有找到任何好的理由拥有多个路由器。根据应用程序的配置方式,您可以将其放置在多个位置。在我的情况下,初始化函数不是唯一的地方,我同意。