0

我使用以下代码将一系列视图嵌入到我的文档中:

{{view App.View.PersonProfile.Name itemBinding="person"}}

我将以下代码用于我的主容器视图及其两个子视图:

App.View.PersonProfile = Ember.ContainerView.extend(
{
    tagName: 'a',
    person:  null,
    childViews: ['Name', 'NameAvatar'],

    click: function()
    {
        App.View.Window.Profile.create({ person: this.get('person') });
    },

    name: Ember.View.extend(
    {
        template: Ember.Handlebars.compile('{{ view.parentView.person.formalName }}')
    }),

    nameAvatar: Ember.View.extend(
    {
        template: Ember.Handlebars.compile
        (
            '<img class="avatar" {{bindAttr src="view.parentView.person.avatar"}} />' +
            '<div class="name">{{ view.parentView.person.formalName }}</div>'
        )
    })
});

但是,当我运行脚本时,显然找不到“App.View.PersonProfile.Name”。这是预期的行为吗?如果是这样,解决方案是什么?是不是extendPersonProfile抽象越好?

4

1 回答 1

1

这不起作用的原因可能是您的应用中不存在属性“App.View.PersonProfile.Name”。您的代码定义了一个名称为小写 n 的属性,该属性将存在于PersonView 的实例中。所以,这里有多层问题。

解决此问题的更好方法是使用模板从 Ember.View 扩展 PersonView。如果您需要子视图(它看起来不像您的示例中那样,但也许您有其他需求),您可以从与 PersonView 关联的模板中引用它们。

如果您尝试这种方法并遇到问题,请发布一个 JS Fiddle 以说明可执行代码中的问题。您可以从 emberjs.com/community 上的那个开始。

于 2012-09-14T10:28:50.617 回答