2014-02-07 39 views
0

所以這個概念很簡單:你來到應用程序,你有一個默認的模板,帶有默認的導航元素。您點擊該導航元素中的鏈接可呈現新模板:#/rails如何在模板已經在emberjs中渲染後發生什麼

從這裏默認導航需要隱藏,並且您的新導航需要被渲染。

我試圖接近這一點的方法,似乎有點傻:我所做的是,

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

$(document).ready(function() { 
    if($('#rails-nav').length !== 0){ 
    $('#main-nav').hide(); 
    } 
}); 

現在,這個問題是,如果你從默認的應用程序模板去,通過導軌模板鏈接 - 你會得到兩個導航,除非你刷新頁面。我的朋友說我應該使用類似於:

{{outlet nav}}然後渲染基於模板的導航。問題是我不知道如何設置這個,我一直在尋找所有的燼網站。

有人能幫我嗎?

回答

0

如果我理解正確,當您說default template時,您的意思是application模板,其中所有其他模板都在其{{outlet}}助手中呈現。

有幾種方法可以實現你想要的,但是我認爲簡單的方法是使用index模板作爲默認模板。在這種情況下,因爲您可以指定是否將導航元素放置在模板中來顯示導航元素,所以evertyhting將更加簡單並且符合您的要求。

http://emberjs.jsbin.com/sume/1/edit

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> 

JS

App = Ember.Application.create(); 

App.Router.map(function() { 
    this.resource("rails"); 
}); 

而且使這個回答更多相關的問題的標題了一下,爲了做一些事情當一個模板呈現的方式是使用didInsertElementView類的回調。

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

http://emberjs.jsbin.com/dido/1/edit