我有一个集合视图如下:
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>
感谢您的帮助!
答案 0 :(得分:2)
使用CollectionView:
Ember.CollectionView
内容应该是对象的集合(请参阅Ember.CollectionView documentation):
Ember.CollectionView是一个Ember.View后代,负责管理集合(数组或类似数组的对象),方法是维护数组中每个项目的子视图对象和相关的DOM表示,并确保子视图及其关联
添加,删除或替换数组中的项目时,将更新呈现的HTML
例如,您可以创建一个具有fName和lName属性的模型App.Name
(此处默认设置为null):
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/