2

Team内のビューをレンダリングしようとしています{{outlet}}。このTeamビューは、単純なPersonビュー (チーム リーダー) とPersonビューのコレクション (チーム メンバー) で構成されます。connectOutlet()アウトレットは、ApplicationControllerを呼び出すことによって設定されます。

子ビューは期待どおりにマークアップでレンダリングされますがPerson、すべての値nameが欠落しています。バインディングやコントローラーが正しく設定されていないようです。私は何が欠けていますか?

コードとデモ: http://jsfiddle.net/aek38/fkKFJ/

関連するハンドルバー テンプレートは次のとおりです。

<script type="text/x-handlebars" data-template-name="app">
    <div class="container">
        {{outlet}}
    </div>
</script>

<script type="text/x-handlebars" data-template-name="person">
    <em>Person name is:</em> {{name}}
</script>

<script type="text/x-handlebars" data-template-name="team">
    <h3>Team Leader</h3>
    <em>Leader name should be:</em>{{leader.name}}
    {{view App.PersonView contentBinding="leader"}}
    <h3>Team Members</h3>
    {{#collection contentBinding="members"}}
        {{view App.PersonView contentBinding="content"}}
    {{/collection}}
</script>

コードスニペット:

App = Ember.Application.create({
ready: function() {
    this.initialize();
},
ApplicationController: Ember.Controller.extend(),
ApplicationView: Ember.View.extend({
    templateName: "app"
}),

Person: Ember.Object.extend({
    name: "Jane Doe"
}),
PersonController: Ember.ObjectController.extend(),
PersonView: Ember.View.extend({
    templateName: "person"
}),

Team: Ember.Object.extend({
    members: [],
    leader: null
}),
TeamController: Ember.ObjectController.extend(),
TeamView: Ember.View.extend({
    templateName: "team"
}),
// ...
4

3 に答える 3

2

使用できます

{{view App.PersonView contextBinding="leader"}}

メンバーの{{#each}}代わりに使用します{{#collection}}

http://jsfiddle.net/LQTsV/1/

于 2012-07-25T07:26:17.420 に答える
0

content人物ビューで変数を設定しているのcontentBindingは、おそらくですpersonBinding。そして、テンプレートでを取得する必要がありview.person.nameます。

{{collection}}ブロックである必要があり{{each}}ます。

{{#each members}}
    {{view App.PersonView personBinding="this"}}
{{/each}}

そして、この人物テンプレートは、名前の正しい場所を探します。

<script type="text/x-handlebars" data-template-name="person">
    <em>Person name is:</em> {{view.person.name}}
</script>

jsを変更しませんでした。

フィドル: http: //jsfiddle.net/albertjan/fkKFJ/9/

于 2012-07-25T07:10:23.377 に答える
0

何が起こっているのかよくわかりませんが、フィドルを微調整して機能させました:

http://jsfiddle.net/lifeinafolder/sPcwv/

ある意味でバインディングが適切に機能していないようです:

contentBinding="これ"

動作しますが

contentBinding="this.leader"

しません。

申し訳ありませんが、これ以上解決できませんでした。

于 2012-07-25T07:07:35.053 に答える