2015-04-30 61 views
5

我正在嘗試使用最近添加的new named substate options創建應用程序路由的加載子狀態,但由於某種原因,我無法使其工作。最初,我剛創建了一個簡單的模板,loading.hbs,它自動工作,但由於應用程序路由上的子狀態問題,我的一些UI仍然可見。我想現在糾正這一點。爲應用程序路由創建加載子狀態

我試過重命名和走動模板以下幾個地方:

/templates/application_loading.hbs 
/templates/application-loading.hbs 
/templates/application/loading.hbs 

似乎沒有工作,雖然。我不需要任何自定義路由行爲,所以默認生成的路由應該對我有用,除非它需要這個工作。有關此功能的文檔似乎很少。我發現jsbin for this feature,我應該按照它正確地做,除非有一些問題與燼。

感謝您的協助。

DEBUG: ------------------------------- 
DEBUG: Ember  : 1.11.1 
DEBUG: Ember Data : 1.0.0-beta.16.1 
DEBUG: jQuery  : 1.11.2 
DEBUG: ------------------------------- 

回答

1

在添加賞金之前,真的應該谷歌它。

很明顯,這個功能是broken。已經有fix,只需要合併和發佈。

0

它看起來像你必須有一個moduleBasedResolver

https://github.com/emberjs/ember.js/blob/06e41ad7ccd28558dd4e651aa070bc06f7757821/packages/ember-application/lib/system/application-instance.js#L153

https://github.com/emberjs/ember.js/blob/b80d66f71d75ad0db9022438ed58a41ac84f45f5/packages/ember-routing/lib/system/router.js#L79

當我看到在灰燼-CLI應用是未定義此值。這看起來很奇怪,因爲ember-cli是基於es6模塊的。

然後我發現這個https://github.com/emberjs/ember.js/issues/10756看起來像你可以添加一個路徑應用程序加載或hack in moduleBasedResolver到註冊表作爲臨時解決方案。

https://github.com/emberjs/ember.js/pull/10944 應解決在長期的問題。

看來你已經找到了這個,當我寫這個答案時它沒有出現加載。對不起,噪音。

+0

由於部分UI,應用程序模板中的內容仍然可見。 您應該仔細閱讀引用內容的段落:「命名的子狀態爲子狀態添加了一個新的查找方法,路由的名稱被預先寫入子狀態,因此應用程序的有效加載子狀態可以定義爲application_loading。 「命名的子狀態專門用於解決這個問題,但由於某種原因,它不起作用。 – NicholasJohn16

+0

啊哈,我誤讀了那一個。我想我發現問題出在哪裏。更新答案。 – varblob

+0

爲您的努力帶來了豐厚的獎勵。 :P – NicholasJohn16

1

我認爲loading.hbserror.hbs是應用程序的加載和錯誤子狀態。 Ember不存在您的application-loading.hbs,這就是爲什麼它不起作用。

至於額外的用戶界面元素:我相信application.hbs的其餘部分都會渲染,所以我唯一的建議是將所有這些元素嵌套更深一層。這聽起來像一個巨大的考驗,但它實際上並不壞:

router.js

this.resource('whatever', {path: '/'} function() { 
    // All your existing routes 
}); 

然後重命名application.hbswhatever.hbs,改變application.hbs只是在它{{outlet}}。在實際中,這應該只會改變很少,但它會保持其他UI元素不會呈現,直到加載完成。