我正在尝试使用最近添加的new named substate options为Application路由创建一个加载子状态,但出于某种原因,我无法使其工作。最初,我刚刚创建了一个简单的模板loading.hbs
,它自动运行,但由于应用程序路径上的子状态问题,我的一些UI仍然可见。我现在想纠正这个问题。
我尝试重命名并将模板移动到以下位置:
/templates/application_loading.hbs
/templates/application-loading.hbs
/templates/application/loading.hbs
似乎没有工作。我不需要任何自定义路由行为,因此默认生成的路由应该为我做,除非它要求这个工作。有关此功能的文档似乎很少。我找到了jsbin for this feature,我应该按照它正确地做,除非ember-cli有一些问题。
感谢您的帮助。
DEBUG: -------------------------------
DEBUG: Ember : 1.11.1
DEBUG: Ember Data : 1.0.0-beta.16.1
DEBUG: jQuery : 1.11.2
DEBUG: -------------------------------
答案 0 :(得分:1)
我认为loading.hbs
和error.hbs
是应用程序的加载和错误子状态。你的application-loading.hbs
对Ember不存在,这就是它无法正常工作的原因。
至于其他UI元素:我相信其余的application.hbs
无论如何都会呈现,所以我唯一的建议是将所有这些元素嵌套到更深层次。这听起来像是一场严酷的考验,但实际上并没有那么糟糕:
在router.js
:
this.resource('whatever', {path: '/'} function() {
// All your existing routes
});
然后将application.hbs
重命名为whatever.hbs
并将application.hbs
更改为只有{{outlet}}
。在实践中,这应该真的改变很少,但它会使其余的UI元素不被渲染,直到加载完成。
答案 1 :(得分:1)
答案 2 :(得分:0)
看起来你必须有一个moduleBasedResolver
当我在ember-cli应用程序中查看此值时,它未定义。这似乎很奇怪,因为ember-cli是基于es6模块的。
然后我发现这个https://github.com/emberjs/ember.js/issues/10756看起来像是可以在moduleBasedResolver中添加路由应用程序加载或破解作为临时解决方案。
和
https://github.com/emberjs/ember.js/pull/10944 应该从长远来看解决这个问题。
看来你已经发现了这个,当我写这个答案时,它似乎没有加载。对不起噪音。