【问题标题】:Backbone: How to render template to DOM?Backbone:如何将模板渲染到 DOM?
【发布时间】:2015-05-27 20:40:56
【问题描述】:

我是 Backbone 的新手,在渲染模板时遇到了困难。
模板本身就是这样不起眼的:

<script id="messageTemplate" type="text/template">
    Message: <%= content %>
</script>

Backbone 视图和模型如下所示:

var Message = Backbone.Model.extend({
    defaults: {
        content: 'Default message'
    }
});

var MessageView = Backbone.View.extend({
    tagName: 'p',
    template: _.template($('#messageTemplate').html()),
    initialize: function() {
      this.render();
    },
    render: function() {
      this.$el.html(this.template(this.model.toJSON()));
      return this;
    }
});

var msg = new Message();
var msgView = new MessageView({model: msg});

我猜没什么特别的——只是一个简单的模型和一个使用模板的视图,用来自msg的内容替换占位符。

当使用personView.el 在控制台中检查时,我得到了正确的 HTML 字符串,但是我应该如何将它呈现给 DOM?

当然,我已经阅读了 Backbone 和 Underscore 文档,但我没有找到太多关于此的内容。

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    主干视图包含对el 的引用,该引用可能是也可能不是页面DOM 的一部分。如果不是,那么您可以像附加任何其他元素一样附加它。

    例如

    var msg = new Message();
    var msgView = new MessageView({model: msg});
    $('#someParentElement').append(msgView.el);
    

    【讨论】:

    • 哈,有时事情是如此令人痛苦地显而易见,我简直不敢相信;-)
    • 很高兴能提供帮助,如果没有指出,通常很容易错过显而易见的
    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多