2012-10-02 60 views
3
// create Ember js app 
App = Ember.Application.create(); 

// Create a grand parent view - without using templateName function/property 
App.GrandparentView = Ember.View.extend({ 
    click: function() { 
    console.log('Grandparent!'); 
    } 
}); 

// Create a parent view by using templateName function/property 
App.ParentView = Ember.View.extend({ 
    templateName:"parent-view",   
    click: function() { 
    console.log('parent view!'); 
    } 
}); 

// use the template to render the view content 
<script type="text/x-handlebars" > 
    {{#view App.GrandparentView}} 
    Click Grandparent View!  
    {{/view}} 
</script> 

// embed the view inside a div 
<div id="Parent"> 
    <script type="text/x-handlebars"> 
    {{view App.ParentView}} 
    </script> 
</div> 

這兩種不同方法在ember.js中的視圖渲染方面如何工作? 哪一個更好,哪個是最好的,哪個更好。ember.js視圖渲染效果如何不同

回答

3

首先,不要把你的Ember模板<script>標籤放在<div>標籤內。這不會達到你的期望。

當您使用{{view App.View1}}時,您告訴ember在此處呈現App.View1的實例。它使用的模板將是您在構建App.View時使用的templateName。例如:

<script type="text/x-handlebars" data-template-name="my-template"> 
    Hello World! 
<script> 

App.View1 = Ember.View.extend({ templateName: 'my-template' }); 

當您使用{{#view App.View2}} {{/view}}你告訴燼在這裏呈現App.View2的實例,但定義模板內聯。 App.View2將不具有templateName屬性,其模板將位於{{#view}}{{/view}}塊內。例如:

{{#view App.View2}} 
    Hello World 
{{/view}} 

App.View2 = Ember.View.extend(); 

兩者都不是最好,但命名模板允許重用,並使代碼更清潔。結構良好的應用程序將利用這兩種模板選項。當你想爲同一個視圖類只提供一次不同的模板時,可以使用匿名/內聯模板(App.View2示例)。

+1

如果兩者都不是最好,你能告訴我最好的版本。 – varunkaushish