2012-04-06 84 views
0

我在加載與RequireJS骨幹意見的收集問題 - 因爲他們沒有按照正確的順序加載。Require.js加載骨幹意見,以便

下面是什麼,我想實現一個簡單的例子 - 一個頁面遍歷小工具的集合,並使用它的「模板」屬性,獲得它的骨幹查看。它們的關鍵在於它們按順序顯示,而且它們正在以隨機順序顯示。

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的插件,但它似乎沒有在做它的工作。有什麼我做錯了嗎?

回答

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(); 
    } 
}); 
+0

啊,這是有道理的。但是,似乎我得到一個錯誤調用'參數',錯誤是'對象函數(){a.apply(this,arguments)}沒有方法'渲染'。 – crawf 2012-04-06 23:48:05

+0

@crawf我的例子缺少視圖的實例化。更新我的答案,它應該工作現在 – nikoshr 2012-04-07 07:26:54

+0

衛生署!我早該知道that..That的方式工作一種享受 - 非常感謝您的幫助! – crawf 2012-04-07 09:40:10