没有扩展应用程序模板emberjs

时间:2015-06-24 20:54:36

标签: javascript ember.js ember-cli

有没有办法让我不在Emberjs中扩展应用程序模板?因为我有一条路线,网址需要/questions用于搜索引擎优化目的,但它的设计与所有其他网页完全不同。所以我不希望它继承应用程序模板。这可能吗?

1 个答案:

答案 0 :(得分:0)

你有两个我能想到的选择。第一个是评论中提出的:为questions和其他所有内容创建单独的顶级路由:

// templates/application.js
{{outlet}}

// templates/questions.js
{{! whatever you want for the questions template }}

// templates/base.js
{{! base template stuff, headers, nav bars, content, etc. }}

// router.js
Router.map({
    this.route('questions');
    this.resource('base', function() {
        this.route('base1');
        ....
    });
});

这将导致/base/base1形式的路由的注释不正确。使用this.resource,路由的格式为/base1

使用网点

还有另一种方法可能满足您的需求。它涉及在应用程序模板中放置一个自定义插座,可以通过子路径填充。然后为"常规路线"定义一个超类。它定义了一个renderTemplate,它将标题重新放入该出口。

// templates/application.js
{{outlet name='header'}}
{{outlet name='main'}}

// mixins/normal-route.js
renderTemplate() {
    this.render('header', {
        outlet: 'header'
    });
}

// router.js
Router.map({
    this.route('questions');
    this.route('base1');
});

// pods/base1/route.js
export default NormalRoute.extend({...

这样做的好处是可以让应用程序模板更具可读性。和语义,因为它明确地表明它由一个(可能的)标题部分组成,填充在一些其他组件中,以及一个" main"部分。