0

我有一个集合视图如下:

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>

谢谢你的帮助!

4

1 回答 1

2

使用 CollectionView :

Ember.CollectionView内容应该是对象的集合(参见Ember.CollectionView文档):

Ember.CollectionView 是 Ember.View 的后代,负责管理集合(数组或类似数组的对象),方法是维护数组中每个项目的子视图对象和关联的 DOM 表示,并确保子视图及其关联的渲染 HTML 是在添加、删除或替换数组中的项目时更新。

例如,您可以创建一个App.Name具有 fName 和 lName 属性的模型(此处默认设置为 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/

于 2012-05-08T11:01:54.153 回答