Backbone.js Require.js按顺序加载主干视图

Backbone.js Require.js按顺序加载主干视图,backbone.js,requirejs,Backbone.js,Requirejs,我在加载带有RequireJS的主干视图集合时遇到问题,因为它们的加载顺序不正确 下面是我试图实现的一个简单示例—一个页面通过一组小部件循环,并使用其“模板”属性获取其主干视图。重要的是,这些都是按顺序显示的,而它们目前是按随机顺序显示的 page.js collection.each(function(widget) { require(['order!views/widgets/' + widget.get('template')], function(WidgetView) {

我在加载带有RequireJS的主干视图集合时遇到问题,因为它们的加载顺序不正确

下面是我试图实现的一个简单示例—一个页面通过一组小部件循环,并使用其“模板”属性获取其主干视图。重要的是,这些都是按顺序显示的,而它们目前是按随机顺序显示的

page.js

collection.each(function(widget) {
    require(['order!views/widgets/' + widget.get('template')], function(WidgetView) {
        WidgetView.render();
    })
}
widgets/widgetView.js(通用视图)


我知道这个命令!RequireJS的插件,但它似乎没有发挥作用。有什么我做错了吗?

据我所知,发出多个
require
调用将以异步模式获取依赖项。您可能需要构建一个视图数组,然后才需要它们。比如说,

var widgets=[];
collection.each(function(widget) {
    widgets.push('order!views/widgets/' + widget.get('template'));
});

require(widgets, function() {
    var viewclass, view;
    for (var i=0, l=arguments.length; i<l; i++) {
        viewclass=arguments[i];
        view=new viewclass();
        view.render();
    }   
});
var小部件=[];
集合。每个(函数(小部件){
widgets.push('order!views/widgets/'+widget.get('template');
});
require(小部件、函数(){
var视图类,视图;

对于(var i=0,l=arguments.length;iAh),这是有意义的。但是,调用“arguments”时似乎出现了一个错误,错误是“Object function(){a.apply(this,arguments)}”没有方法“render”。@crawf我的示例缺少视图的实例化。更新了我的答案,现在应该可以了!我应该知道..顺便说一句,这很有效-非常感谢您的帮助!查看上接受的答案,我想这就是您要找的:)
var widgets=[];
collection.each(function(widget) {
    widgets.push('order!views/widgets/' + widget.get('template'));
});

require(widgets, function() {
    var viewclass, view;
    for (var i=0, l=arguments.length; i<l; i++) {
        viewclass=arguments[i];
        view=new viewclass();
        view.render();
    }   
});