1

我在我的文件系统中预渲染了 HTML 片段。是否可以在backbone.js中加载HTML 片段?我正在寻找类似于Angular.js的ng-include的东西

例如,在我的文件系统(frag.html)中

<h1>I'm a fragment</h1>

应该在给定的占位符位置注入模板

<div id="ph">
   <!-- INJECTED -->
   <h1>I'm a fragment</h1>
</div>
4

1 回答 1

1

假设,我们有这个占位符:

<div id="ph"></div>

和 frag.html 文件中的这个 HTML:

<div>
    <h1>I am</h1>
    <span>an HTML fragment</span>
</div>

PrerenderedView让我们用一个特殊的方法定义我们的自定义,render其中包含 jQuery 函数load

window.PrerenderedView = Backbone.View.extend({
  render: function() {
    this.$el.load(this.options.ajax_template_path, _.bind(this.onRender, this));
    return this;
  },
  onRender: function() {
    // do some stuff here, for example
    var h1 = this.$('h1');
    var text = this.model.get('some_value');
    setTimeout(function() {
      h1.text(text);
    }, 2000);
  }
});

在实例化的那一刻,PrerenderedView我们应该传递一个选项ajax_template_path(在我们的例子中是'frag.html')。

$(function() {
  new window.PrerenderedView({
    el: $('#ph'),
    model: new Backbone.Model({some_value: 'It was'}),
    ajax_template_path: 'frag.html'
  }).render();
});

当然,如果我们要在没有服务器的情况下工作,我们不会忘记同源策略。例如,我们可以使用标志“--allow-file-access-from-files”启动 chrome。

于 2013-08-05T11:54:37.087 回答