我在使用RequireJS加载Backbone Views集合时遇到问题 - 因为它们没有以正确的顺序加载。
下面是我想要实现的一个简单示例 - 一个页面循环遍历一组小部件,并使用其“模板”属性获取其Backbone View。关键是这些按顺序显示,并且它们当前以随机顺序显示。
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的插件,但它似乎没有完成它的工作。有什么东西我做错了吗?
答案 0 :(得分: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();
}
});