Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
Javascript 访问require.js回调的返回值_Javascript_Return Value_Requirejs_Amd - Fatal编程技术网

Javascript 访问require.js回调的返回值

Javascript 访问require.js回调的返回值,javascript,return-value,requirejs,amd,Javascript,Return Value,Requirejs,Amd,我在一个文件中定义了如下模块 define(['mod1', 'mod2'], function (mod1, mod2) { var IndexView = Backbone.View.extend({ ... }); return new IndexView; }); 这是从另一个文件(我的主干路由器文件)中需要的,如下所示 require(['src/views/index']); 我可以让返回的IndexView对象从路由器的作用域中

我在一个文件中定义了如下模块

define(['mod1', 'mod2'], function (mod1, mod2) {

    var IndexView = Backbone.View.extend({

        ...

    });

    return new IndexView;

});
这是从另一个文件(我的主干路由器文件)中需要的,如下所示

require(['src/views/index']);

我可以让返回的
IndexView
对象从路由器的作用域中访问,而不必在我的应用程序名称空间中存储引用吗?

使用require.js传递主干视图/模型的实例会很快让你的生活非常不愉快。让模块只返回视图/模型的定义会容易得多,这样可以在同一范围内实例化它们

因此,如果让视图模块仅返回定义:

// IndexView module
define(['dep1', 'dep2'], function (dep1, dep2) {

    var IndexView = Backbone.View.extend({

        ...

    });

    return IndexView;

});
然后,您可以在路由器内对其进行实例化:

// our main requirejs function
requirejs(['path/to/indexview'], function (IndexView) {

    var AppRouter = Backbone.Router.extend({

        initialize: function () {

            // bind our IndexView to the router
            this.IndexView = new IndexView();

        }

    });

    // start the app
    var app = new AppRouter();

});

这样,您的代码仍然是Require.js模块化的,但是您可以使用
this

传递Require.js主干视图/模型的实例,这将很快让您的生活非常不愉快。让模块只返回视图/模型的定义会容易得多,这样可以在同一范围内实例化它们

因此,如果让视图模块仅返回定义:

// IndexView module
define(['dep1', 'dep2'], function (dep1, dep2) {

    var IndexView = Backbone.View.extend({

        ...

    });

    return IndexView;

});
然后,您可以在路由器内对其进行实例化:

// our main requirejs function
requirejs(['path/to/indexview'], function (IndexView) {

    var AppRouter = Backbone.Router.extend({

        initialize: function () {

            // bind our IndexView to the router
            this.IndexView = new IndexView();

        }

    });

    // start the app
    var app = new AppRouter();

});
这样,您的代码仍然是Require.js模块化的,但是您可以使用
this
传递路由器的作用域