Javascript 如何在模板在emberjs中呈现后发生一些事情

Javascript 如何在模板在emberjs中呈现后发生一些事情,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,所以这个概念很简单:你来到应用程序,你有一个默认的模板,带有一个默认的导航元素。单击导航元素中的链接,它将呈现一个新模板:#/rails 从这里开始,需要隐藏默认导航,并呈现新导航 我试图这样做的方式似乎有点愚蠢:我所做的是 SG.Router.map(function(){ this.resource('rails'); }); $(document).ready(function() { if($('#rails-nav').length !== 0){ $('#main-

所以这个概念很简单:你来到应用程序,你有一个默认的模板,带有一个默认的导航元素。单击导航元素中的链接,它将呈现一个新模板:
#/rails

从这里开始,需要隐藏默认导航,并呈现新导航

我试图这样做的方式似乎有点愚蠢:我所做的是

SG.Router.map(function(){
  this.resource('rails');
});

$(document).ready(function() {
  if($('#rails-nav').length !== 0){
    $('#main-nav').hide();
  }
});
现在的问题是,如果您从默认应用程序模板通过链接转到rails模板,那么您将获得两个导航,除非您刷新该页面。我的朋友说我应该使用类似的东西:

{{outlet nav}}
然后根据模板呈现导航。问题是我不知道如何设置这个,我一直在寻找整个余烬网站


有人能帮我吗?

如果我理解正确,当你说
默认模板
时,你指的是
应用程序
模板,所有其他模板都在它的{{outlet}助手中呈现

有几种方法可以实现您想要的,但我认为一种简单的方法是使用
索引
模板作为默认模板。在这种情况下,每个元素都会简单得多,并且可以根据需要工作,因为您可以通过将导航元素放置在模板中来指定是否显示导航元素

hbs

<script type="text/x-handlebars">
    <h2> Welcome to Ember.js</h2>

    {{outlet}}
  </script>

  <script type="text/x-handlebars" data-template-name="index">
    This is the default template using <i>index</i>
    <br/>
    <br/>
    <span style="background-color:grey">this is the nav part {{#link-to 'rails'}}go to rails{{/link-to}}</span>
  </script>

  <script type="text/x-handlebars" data-template-name="rails">
    this is the rails app
  </script>
App = Ember.Application.create();

App.Router.map(function() {
  this.resource("rails");
});
另外,为了使这个答案与问题的标题更相关,为了在模板呈现时做一些事情,可以使用
视图
类的
didInsertElement
回调

App.RailsView = Ember.View.extend({
  didInsertElement:function(){
    if($('#rails-nav').length !== 0){
      $('#main-nav').hide();
    }
  }
});