2012-09-27 14 views
0

例如,我有這樣一個腳本,它定義了一個新的div,用一個頁碼使用Ember和Handlebars,你如何在模板塊內動態聲明參數?

<script type="text/x-handlebars" data-template-name="page-template"> 
    <div class = 'page'> 
     The page is <b>{{ App.pageView_1.pageNumber }}</b> 
    <div> 
</script> 

相應的視圖註釋:

App.pageView_1 = App.PageView.create({ 
    templateName: 'page-template', 
    pageNumber: 1, 
}) 

而且我要動態地宣佈新的觀點,每一個與不同的頁面編號字段和視圖名稱,所以:

App.pageView_2 = App.PageView.create({ 
     pageNumber: 2, 
    }); 

    App.pageView_3 = App.PageView.create({ 
     pageNumber: 3, 
    }); 

注意到TEMPLATENAME領域已爲清楚起見,省略。

問題是模板塊中的參數必須更改爲{{App.pageView_2.pageNumber}}等等。

任何想法如何做到這一點?

回答

1

一位接近餘燼方式:

{{#each App.pagesController}} 
    {{#view App.PageView contextBinding="this"}} 
     {{pageNumber}} 
    {{/view}} 
{{/each}} 

和一個控制器:

App.pagesController = Em.ArrayController.create({ 
    content: [{ pageNumber: 1 }, { pageNumber: 2 }, { pageNumber: 3 }] 
}); 

順便說一句,你可能希望templateName視圖時最初定義進行設置。

0
{{view App.pageView pageNumber="2"}} 
    {{pageNumber}} 
{{/view}} 

應該工作,但似乎是多餘的。

0

嗯,首先聲明一個通用視圖

App.pageView = Ember.View.extend({ 
    templateName: "page_template" 
    classNames: ['page'] 
}) 

page_template.handlebars

The page is {{view.pageNumber}} 

現在,已經聲明這一點,不管你想要做以下使用:

{{view App.pageView pageNumber="1"}} 

這應該工作我猜...