2012-09-14 55 views
0

我已經嵌入了一系列的意見納入我的文檔使用下面的代碼:如何引用Handlebars中的子視圖?

{{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摘要更好嗎?

回答

1

不工作的原因可能是您的應用中不存在屬性「App.View.PersonProfile.Name」。你的代碼定義了名稱爲小寫n的屬性,該屬性將存在於PersonView的實例中。所以,這裏有多層問題。

解決這個問題的一個更好的方法是從一個模板擴展Ember.View的PersonView。如果你需要子視圖(它看起來不像你會從你的例子中看到的,但也許你有其他需要),你可以從與PersonView相關聯的模板中引用它們。

如果您嘗試使用此方法並遇到問題,請發佈JS小提琴來說明可執行代碼中的問題。你可以從emberjs.com/community上的那個開始。

相關問題