Ember.js - 如何根据当前路线隐藏部分?

时间:2013-07-25 10:19:33

标签: ember.js handlebars.js

我希望只能在我的某些路线上显示侧边栏。我怎样才能实现这样的目标:

<div class="container">
    <div id="ember-app">
        <script type="text/x-handlebars">
            // if currentRoute == /something, then show this:
            <div class="row">
                {{partial sidebar}}
                <div class="span9 offset3 user-feed">
                    {{outlet}}    
                </div>
            </div>
            // else, show this:
            {{outlet}}
            // endif
        </script>
    </div>
</div>

<script type="text/x-handlebars" data-template-name="_sidebar">
    // Sidebar code here ...
</script>

所以,当我访问/#/某些东西时,我应该看到侧边栏,但在所有其他路线上,我不应该。

2 个答案:

答案 0 :(得分:3)

您可以观察currentPath属性以使当前路由与Regex匹配。

App.ApplicationController = Ember.Controller.extend({
 showSidebar: function(){
  var routes_array = ['two','four'],
    currentPath = this.get('currentPath'),
    filteredArray, showSideBar = false;

  routes_array.forEach(function(itm){
   var tab = new RegExp('^'+itm+'*');
   if(!Em.isEmpty(currentPath.match(tab)))
    showSideBar = true;
   });
  return showSideBar;
 }.property('currentPath')
});

Just a simple try Here

答案 1 :(得分:1)

一个简单的修复可能是使用带引号的partials参数?

{{partial 'sidebar'}}