【问题标题】:Require.js loading Backbone views in orderRequire.js 按顺序加载 Backbone 视图
【发布时间】:2012-04-19 23:40:32
【问题描述】:

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

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

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 的插件,但它似乎没有完成它的工作。是不是我做错了什么?

【问题讨论】:

标签: backbone.js 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();
    }   
});

【讨论】:

  • 啊,有道理。但是,似乎我在调用“参数”时遇到错误,错误是“对象函数 (){a.apply(this,arguments)} has no method 'render'。
  • @crawf 我的示例缺少视图的实例化。更新了我的答案,现在应该可以使用了
  • 噢!我应该知道..顺便说一句,这是一种享受 - 非常感谢您的帮助!
猜你喜欢
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多