【问题标题】:How do you dynamically create Backbone view elements?如何动态创建 Backbone 视图元素?
【发布时间】:2012-04-13 12:26:24
【问题描述】:

我想在 Backbone js 应用程序中动态创建一些视图元素。当一个新视图被初始化时,我希望它把新元素插入到 DOM 中,将对该元素的引用存储在 view.el 中,并像往常一样委托事件。

我知道我可以放入我的 html,然后使用 el: "#test" 设置一个视图,但这对于模式和其他不是 Web 应用程序中心的视图来说似乎有点过分了。有没有规定的方法来做到这一点我在文档中缺少?我只是误解了视图应该如何工作吗?

【问题讨论】:

    标签: javascript backbone.js backbone-views


    【解决方案1】:

    主干视图将为您生成一个el,您无需执行任何操作。默认情况下,它会创建一个<div>。不过,您可以生成任何您想要的标签名称。实例化视图后,在视图上实现 render 方法,并使用 HTML 填充 el

    
    MyView = Backbone.View.extend({});
    
    var v = new MyView();
    console.log(v.el); // => "<div></div>"
    
    
    // define your own tag, and render contents for it
    
    MyTagView = Backbone.View.extend({
      tagName: "ul",
    
      render: function(){
        this.$el.html("<li>test</li>");
      }
    });
    
    var v2 = new MyTagView();
    v2.render();
    console.log(v2.el); // => "<ul><li>test</li></ul>"
    

    通常的做法是使用模板系统来呈现视图的 HTML,例如 Underscore.js 模板、Handlebars 或其他十几个或更多模板 JavaScript 模板引擎中的任何一个。

    从视图生成内容后,您需要将其粘贴到 DOM 中的某个位置,然后才能看到它。这通常使用 jQuery 或其他插件来完成:

    $("#some-element").html(v2.el);

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2020-06-15
      • 2013-06-03
      相关资源
      最近更新 更多