2012-05-08 65 views
0

我有一個集合觀點如下:如何在車把中引用childview?

Ember.Widget.ParentView = Ember.CollectionView.extend({ 

    content: ['childView1', 'childView2'], 

    fnameBinding: ChildView1.fname, 
    lnameBinding: ChildView1.lname, 

    ChildView1: Ember.View.extend({ 
     templateName: 'ChildView1', 

     fname: 'David', 
     lname: 'Johnson', 
    }), 

    ChildView2: Ember.View.extend({ 
     fnameBinding: '_parentView.fname', 
     lnameBinding: '_parentView.lname', 
    }) 
}); 

如果我想顯示ChildView1.handlebar的名字,我應該如何引用FNAME?以下不起作用:

<script type="text/x-handlebars" name="ChildView1"> 
{{fname}}{{lname}} 
</script> 

感謝您的幫助!

回答

2

使用的CollectionView:

Ember.CollectionView含量應的對象的集合(參見Ember.CollectionView documentation):

Ember.CollectionView是Ember.View後代負責管理的集合(一個陣列或類似數組的對象),方法是維護數組中每個項的子視圖對象和關聯的DOM表示,並確保在添加,刪除或替換數組中的項時更新子視圖及其關聯的呈現HTML。

可以,例如,創建一個具有FNAME和L-NAME屬性(此處默認設置爲null)模型App.Name

App.Name = Ember.Object.extend({ 
    fName: null, 
    lName: null 
}); 

然後建立這個模型的實例:

App.name1 = App.Name.create({fName: 'David', lName: 'Johnson'}); 
App.name2 = App.Name.create({fName: 'Stack', lName: 'Overflow'}); 

最後,在顯示的CollectionView其中:

App.ParentView = Ember.CollectionView.extend({ 
    content: [App.name1, App.name2], 
    itemViewClass: Ember.View.extend({ 
    template: Ember.Handlebars.compile('firstName: {{content.fName}}, lastName: {{content.lName}}') 
    }), 
}); 

,您可以嘗試在此琴:http://jsfiddle.net/Ev3mR/

使用視圖:

你也可以做到這一點就像這個小提琴:http://jsfiddle.net/y4FUr/