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>

jQuery 関数を内部に持つPrerenderedView特別なメソッドでカスタムを定義しましょう。renderload

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」を使用してクロムを開始できます。

于 2013-08-05T11:54:37.087 に答える