2012-04-06 46 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