0

在我当前的 Ember 项目中,我有一个身份验证系统。某些页面只能由经过身份验证的用户查看。检查用户是否通过身份验证并控制对页面的访问非常简单,因此没有问题。

问题是我有某些页面可供经过身份验证和未经身份验证的用户查看。经过身份验证的用户看到的导航(顶部和侧边栏)与未经过身份验证的用户(更多导航选项、设置等)不同。我想根据用户是否经过身份验证来更改使用的布局。问题是我似乎只能将一个布局设置为视图。

一般代码如下所示:

布局:

<script type="text/x-handlebars" data-template-name="authenticated_layout">
  //authenticated layout mark up
  {{yield}}
</script>

<script type="text/x-handlebars" data-template-name="not_authenticated_layout">
  //not_authenticated layout mark up
  {{yield}}
</script>

文章模板(文章可以被认证或非认证用户查看):

<script type="text/x-handlebars" data-template-name="article">
  //article mark up
</script>

文章视图:

App.ArticleView = Ember.View.extend({
  templateName: "article",
  layoutName: //want this to be based on authentication state
  //other view code
})

我对每个布局都有不同的视图,并根据用户是否经过身份验证使用视图呈现模板。我看到的问题ArticlesView不仅仅是设置布局,我真的不希望有两个单独的视图,它们的layoutName属性不同。

任何建议将不胜感激。

4

1 回答 1

2

我认为您 layoutName 中的计算属性可以工作。

伪代码:

App.ArticleView = Ember.View.extend({
  templateName: "article",
  layoutName: function() {
    // you can use your own logic to know if the user is authenticated
    // but don't forget to add in the property(dependenKey), if needed
    return App.get('currentUser') ? 'authenticated_layout' : 'not_authenticated_layout';
  }.property('App.currentUser')
})
于 2013-11-14T17:05:40.813 回答