我已经用 Ember 试验了几个小时但无法解决的问题。希望这只是我在阅读 Ember 文档时遇到的一个术语问题。
我有一个应用程序,在大多数情况下,它由一个侧边栏/顶栏(称为包装器)和一个页脚组成。
我的基本 application.hbs 看起来像这样(我使用 Ember App Kit 来提供结构):
{{partial "wrapper"}}
{{outlet}}
{{partial "footer"}}
如果这是我的应用程序的状态,它会工作得很好。页面内容在 {{outlet}} 中加载正常。
我的主要问题是如何以“Ember”的方式打破这个模板结构(最好不要使用所有 jQuery 并随意删除 DOM 元素)。
我有一些我不希望包装器和页脚显示的路由(它们是全页登录/忘记密码路由,以及一些最小界面/无干扰模式)。
我尝试通过制作默认模板(application.hbs)来尝试删除侧边栏和页脚:
{{#if showWrappers}}
{{partial "wrapper"}}
{{/if}}
{{outlet}}
{{#if showWrappers}}
{{partial "footer"}}
{{/if}}
ApplicationController在哪里showWrappers
:
export default Ember.Controller.extend({
showWrappers: function() {
var routes = ['login'],
currentPath = this.get('currentPath'),
show = true;
routes.forEach(function(item) {
var path = new RegExp('^' + item + '*');
if (!Ember.isEmpty(currentPath.match(path))) {
show = false;
}
});
return show;
}.property('currentPath'),
});
尝试从 / 使用 {{link-to}} 转换到 /login 会返回错误:Uncaught Error: Cannot perform operations on a Metamorph that is not in the DOM
大概是因为我正在删除 Ember 想要保留的东西(我正在使用 {{link-to}} 和 {{bind-attr} } 在边栏中,所以那里有绑定)。
知道我可以使用操作和 jQuery 来隐藏页面元素并将它们带回“无干扰”模式,但我更愿意学习如何构建模板并使用带有 renderTemplate 钩子的路由,可能使用 this.render ( ?) 吹走当前的 DOM 并从不同的基础(而不是 application.hbs)重建。
想法?非常乐意澄清。