Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不扩展应用程序模板_Javascript_Ember.js_Ember Cli - Fatal编程技术网

Javascript 不扩展应用程序模板

Javascript 不扩展应用程序模板,javascript,ember.js,ember-cli,Javascript,Ember.js,Ember Cli,我有没有办法不在Emberjs中扩展应用程序模板?正如在我有一个路径,url需要是/questions,用于SEO目的,但它的设计与所有其他页面完全不同。所以我不希望它继承应用程序模板。这可能吗?你有两个选择,我可以考虑。第一个是在评论中提出的:为问题和其他所有问题创建单独的顶级路线: // templates/application.js {{outlet}} // templates/questions.js {{! whatever you want for the questions

我有没有办法不在Emberjs中扩展应用程序模板?正如在我有一个路径,url需要是
/questions
,用于SEO目的,但它的设计与所有其他页面完全不同。所以我不希望它继承应用程序模板。这可能吗?

你有两个选择,我可以考虑。第一个是在评论中提出的:为
问题
和其他所有问题创建单独的顶级路线:

// 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({...

这样做的好处是允许应用程序模板更具“可读性”和语义,因为它明确显示了它由(可能的)标题部分(填充了一些其他组件)和“主”部分组成。

您不能在应用程序模板中放入任何内容,然后把剩下的路由放在基础路由或其他东西下面更深一层。@Kingpin2k是的,但这会影响url。它最终将成为
/base route/questions
而不仅仅是
/questions
我是说,将基本路线用于其他所有内容,这样,应用程序模板中任何您想要显示的内容都将在那里完成,但在访问
/questions
@三个重音不正确,如果
questions
被定义为资源,我会按照@Kingpin2k的建议,简单地在基本路径上设置
{path:'/',resetNamespace:true}