我一直在嘗試使用Ember幾個小時,但無法解決問題。希望這只是一個術語問題,我在閱讀Ember文檔時被困住了。沒有根據路線渲染/刪除側邊欄
我有一個應用程序,大多數情況下,它包含一個側邊欄/頂部欄(稱爲包裝)和一個頁腳。
我的基本application.hbs看起來像這樣(我用灰燼應用套件提供結構):
{{partial "wrapper"}}
{{outlet}}
{{partial "footer"}}
如果這是我的應用程序的狀態,它會工作得很好。頁面內容加載到{{outlet}}的罰款。
我的主要問題是如何以「Ember」的方式突破這個模板結構(並且最好不用去掉所有的jQuery並且不刪除DOM元素)。
我有幾條路線,我不希望包裝和頁腳顯示(他們是整頁登錄/忘記密碼路線,和一些最小界面/沒有分心模式)。
我嘗試,試圖通過使默認模板(application.hbs),以清除邊欄和頁腳:
{{#if showWrappers}}
{{partial "wrapper"}}
{{/if}}
{{outlet}}
{{#if showWrappers}}
{{partial "footer"}}
{{/if}}
凡showWrappers
是在ApplicationController中:
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'),
});
Attemping過渡到/ login from/{{link-to}}返回錯誤:Uncaught Error: Cannot perform operations on a Metamorph that is not in the DOM
大概是因爲我正在刪除Ember想要保留的東西(我正在使用{{link-to}}和{{bind-attr}}側邊欄,所以那裏有綁定)。
意識到我可以使用動作和jQuery來隱藏頁面元素並將它們帶回「無分散模式」模式,但我更願意學習如何構建模板並使用具有renderTemplate掛鉤的Routes潛在地使用this.render(?)吹走當前的DOM並從不同的基礎(而不是application.hbs)重建。
想法?非常樂意澄清。