灰色加载模板仅适用于页面刷新

时间:2016-01-19 23:49:32

标签: ember.js ember-cli

我的Ember应用程序中有这条路线:

Router.map(function() {
    // landing page (login/register)
    this.route('home', {path: '/'});

    // authenticated pages
    this.route('webappFrame', {path: '/app'}, function() {
        this.route('feed', {path: 'feed'});
        this.route('photoDetail', {path: 'photo/detail/:id'});
    });
});

其中“feed”和“photoDetail”都有一个返回promise的模型钩子(来自服务器的记录); 我在/ template文件夹中有一个loading.hbs模板;

在“feed”和“photoDetail”路径上刷新页面后,正确显示加载模板; 但是当在路线之间导航时,它不再显示(出口仍然是白色的,承诺得到解决);

我使用ember-cli 2.3.0-beta.1(但也尝试使用1.13.14稳定版)和ember 2.3.0; 在官方的ember文档中写道,它应该始终遍历模板树,直到找到加载模板; 有人能告诉我这里有什么问题吗?

更新------------------------------------------- ---------

// feed model hook
model: function(params, transition) {
    return this.store.query('photo', {type: 'feed'});
}

// photoDetail model hook
model: function(params, transition) {
    var self = this;

    return Ember.RSVP.hash({
        photo: self.store.find('photo', params.id),
        comments: self.store.query('comment', {id: params.id})
    });
},

并在Feed模板中:

{{#each photo as |item|}}
    {{photo-item item=item}}
{{/each}}

然后是照片项目组件:

{{#link-to "webappFrame.photoDetail" item.id}}
    <img class="photoImage" src="{{imageurl item.hash type='photo'}}">
{{/link-to}}

其中{{imageurl}}只是一个帮助创建图像的路径; 在这里我将“item.id”传递给link-to(传递“item”本身的instad)以在输入细节时强制重新加载照片(为了得到评论)

现在,我已经添加了templates / webapp-frame / loading.hbs并且它可以工作; 问题是加载模板在整个应用程序中总是相同的;所以我希望在每个/ templates子文件夹中只有一个而不是副本...

1 个答案:

答案 0 :(得分:2)

Ember处理每个路由的加载模板,它总是“routename-loading.hbs”,似乎你没有创建匹配的模板,这就是为什么你只看到一个白页(默认)。如果您不确定哪些模板是必需的或者必须如何命名,请安装ember检查器并检查路由选项卡,在那里您可以看到ember期望的内容以及它应该如何命名。

enter image description here