0

我在使用 RequireJS 加载主干视图集合时遇到问题 - 因为它们没有按正确的顺序加载。

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

page.js

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

小部件/widgetView.js(通用视图)

define(['underscore','backbone'], function(_, Backbone) {
    var WidgetView = Backbone.View.extend({
        render: function() {
            // .. show view
        }
    });
   return WidgetView;
});

我知道顺序!RequireJS 的插件,但它似乎没有完成它的工作。有什么我做错了吗?

4

1 回答 1

1

据我所知,发出多个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();
    }   
});
于 2012-04-06T11:30:49.143 回答