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

不太确定发生了什么,但我调整了您的小提琴以使其正常工作:

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

似乎绑定在某种意义上无法正常工作:

内容绑定=“这个”

有效,但

contentBinding="this.leader"

没有。

对不起,但我无法解决更多问题。

于 2012-07-25T07:07:35.053 回答
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 回答