javascript - Backbone.js - 如何包含外部 HTML 片段

标签 javascript ajax backbone.js pjax

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

ng-include 的东西

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

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

应注入(inject)到模板的给定占位符位置

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

最佳答案

假设我们有这个占位符:

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

frag.html 文件中的 HTML:

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

让我们使用 jQuery 函数 load 使用特殊的 render 方法来定义自定义 PrerenderedView里面:

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();
});

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

关于javascript - Backbone.js - 如何包含外部 HTML 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053494/

相关文章:

javascript - 填充内部多边形的外部区域

php - 禁止直接访问 PHP 文件

javascript - 如何在不取消页面卸载的情况下发送 AJAX PUT 请求?

javascript - 如何将自定义框架集成到主干中?

javascript - 将 Backbone Model 属性绑定(bind)到 TinyMCE 文本

javascript - 如何循环这个 PL/SQL 语句,以便它在我的 Google map 上绘制多个标记?

javascript - 如何确定静态 Google map 缩放级别

javascript - 我可以在 onclick 中使用 if else 语句吗?

javascript - 如果选中复选框,如何获取行数据

jquery - 在 SugarPro 中设置电子邮件字段的值