無禮的我做了你想要的部分頁面。
所以我做了一個視圖的容器視圖,我想渲染。例如:
{{view MainApp.AppContainerView elementId="appContainerView"}}
然後,當我需要在這個容器內渲染一個特別的神廟時,我用ajax把它覆蓋了。例如,如果我想顯示模板「xpto」,我在一個名爲「xpto.handlebars」的文件中使用了該模板。所以我這樣做:
view = Ember.View.create({
willInsertElement : function(){
var isLoaded = this.isLoaded;
if(!isLoaded){
getTemplate("/app_dev/templates/" + templateName + ".handlebars", this);
}
}
});
其中「TEMPLATENAME」其要顯示你的模板,在這種情況下,它的「xpto」名,「是getTemplate」它的一個ajax函數來獲取模板:
function getTemplate(path, view){
$.ajax({
url: path,
xhrFields: {
withCredentials: true
},
//cache: true,
success: function(data) {
var templateName = "";
$(data).filter('script[type="text/x-handlebars"]').each(function() {
templateName = $(this).attr('data-template-name');
Ember.TEMPLATES[templateName] = Ember.Handlebars.compile($(this).html());
});
if(view != null){
view.set("templateName", templateName);
view.rerender();
}
}
});
}
,最後我這樣做是爲了將視圖添加到container:
var containerView = Em.View.views['appContainerView'];
if(containerView == undefined)
return;
var temp = containerView.toArray();
if(temp.length > 0)
containerView.unshiftObject();
containerView.addObject(view);
我希望這可以幫助你,
Juanito
這個'@get('templateToShow')'返回什麼值? – intuitivepixel
它返回一個有效並退出的模板名稱。如果我直接在這裏放置模板名稱,結果和錯誤保持不變 – Piotr