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.NamefName プロパティと 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 に答える