2013-08-05 88 views
1

我在我的文件系統中預渲染了HTML片段。是否有可能在backbone.js中加載HTML片段?我在尋找類似的東西NG-包括 Angular.jsBackbone.js - 如何包含外部HTML片段

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

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

應注射到模板中定的佔位符位置

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

回答

1

假設,我們有這個佔位符:

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

,這在HTML文件frag.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(); 
}); 

,當然,我們不如果我們將沒有服務器的工作忘記Same Origin Policy。例如,我們可以用'--allow-file-access-from-files'來啓動chrome。