gpt4 book ai didi

layout - Ember.js 中的多种布局?

转载 作者:行者123 更新时间:2023-12-02 09:34:00 24 4
gpt4 key购买 nike

来自 Rails 背景,您可以拥有多个布局 - 例如,匿名用户页面,然后是经过身份验证的页面。

Ember 可以做到这一点吗?

我尝试在我的 UsersRouter 中声明一个新的 templateName,但没有成功。

我还检查了本指南:http://emberjs.com/guides/views/adding-layouts-to-views/

但它似乎不起作用:/

最佳答案

您可以使用{{render}}里面 if显示不同布局的助手。

例如,如果您有 ApplicationControllerloginlogout操作处理程序,以及相应的“loggedIn”属性。

App.ApplicationController = Ember.Controller.extend({
loggedIn: false,

login: function() {
this.set('loggedIn', true);
},

logout: function() {
this.set('loggedIn', false);
}
});

您可以绑定(bind)到 loggedIn应用程序模板内的属性如下所示。

<script type='text/x-handlebars' data-template-name='application'>
<button {{action login }}>Login</button>
<button {{action logout }}>Logout</button>

{{#if loggedIn}}
{{render 'user'}}
{{else}}
{{render 'guest'}}
{{/if}}

</script>

哪里userguest是相应的模板。

<script type='text/x-handlebars' data-template-name='user'>
<h1>User layout</h1>
<div class='box user'>
{{outlet}}
</div>
</script>

<script type='text/x-handlebars' data-template-name='guest'>
<h1>Guest layout</h1>
<div class='box guest'>
{{outlet}}
</div>
</script>

这是一个工作 jsbin .

编辑:不使用基于某些静态标准或通过 model 加载的应用程序路由 Hook ,您可以覆盖 renderTemplate ApplicationRoute的方法.

App.ApplicationRoute = Ember.Route.extend({
renderTemplate: function() {
var loggedIn = false;
if (loggedIn) {
this.render('user');
} else {
this.render('guest');
}
}
});

关于layout - Ember.js 中的多种布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17285660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com