2014-07-07 71 views
0

我有這段代碼,我想從視圖文件夾內的外部文件加載我的HTML模板。在Phonegap/Cordova應用程序中使用Backbone加載HTML本地模板文件

var InputView = Backbone.View.extend({ 
    tagName: 'form', 

    template: _.template($.get('views/inputCapo.html')), 

    render: function(){ 
    app.$el.append(this.template); 
    return this; 
    } 

}); 

app是我的應用程序的主視圖中,我知道與本地文件在那裏我可以不加載,出於安全原因,XHR請求的問題。

我知道這是瀏覽器的問題,但與phonegap應用程序的問題是一樣的嗎?

要完成保持HTML文件與腳本分離的相同功能,哪種方法是最佳選擇?

我已經看到了require.jstext.js用於加載HTML文件的庫,但沒有$.get,但是對XHR限制的依賴性依然存在。

+0

是否有某些原因不希望在編譯期間預編譯模板? – glortho

+0

你是什麼意思?你在談論Grunt還是別的什麼? – rkpasia

+0

Grunt是一種選擇,是的,但是有很多方法可以預編譯模板,這樣更好,因爲那樣一切都是捆綁的。不這樣做的唯一原因是如果你有非常大的模板,只會被調用很少。 – glortho

回答

0

預編譯模板可能更有效,而不是動態地請求它們。一種方法是使用Grunt將它們構建到JST名稱空間中 - https://github.com/gruntjs/grunt-contrib-jst

然後在你的Gruntfile,這樣的事情:

jst: { 
    compile: { 
    files: { 
     "path/to/compiled/templates.js": ["path/to/source/**/*.html"] 
    } 
    } 
} 

在您的骨幹查看:

var InputView = Backbone.View.extend({ 
    tagName: 'form', 

    template: JST['views/inputCapo'], 

    render: function(){ 
    app.$el.append(this.template()); 
    return this; 
    } 

}); 

然後就一定要包括在你的index.html文件的path/to/compiled/templates.js腳本的骨幹之前觀點。

相關問題