基本上我在页面的各个部分做了你想要的。
所以我所做的就是为我想要渲染的视图创建一个容器视图。例如:
{{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();
}
}
});
}
最后我这样做是为了将视图添加到容器中:
var containerView = Em.View.views['appContainerView'];
if(containerView == undefined)
return;
var temp = containerView.toArray();
if(temp.length > 0)
containerView.unshiftObject();
containerView.addObject(view);
我希望这可以帮助你,
华尼托