0

RequireJSを使用してバックボーンビューのコレクションをロードする際に問題が発生します-正しい順序でロードされていないためです。

以下は、私が達成しようとしていることの簡単な例です。ページはウィジェットのコレクションをループし、その「template」属性を使用して、バックボーンビューを取得します。これらが順番に表示されることが重要であり、現在はランダムな順序で表示されています。

page.js

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

widgets / 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 に答える