2013-09-24 92 views
1

我正在構建一個播放列表。我有兩個模型描述服務器的JSON響應視圖忽略contentBinding

App.ChartsModel = Em.Model.extend({ 
    playlist: Em.belongsTo('App.PlaylistModel', { key: 'playlist', embedded: true }) 
}) 

App.PlaylistModel = Em.Model.extend({ 
    description: Em.attr() 
    uc_date: Em.attr() 
}) 

這些模型的實例在路由中成功加載到控制器中。然後,我有我的主要模板:

#playlists 
    App.PlaylistView controllerBinding="controllers.playlist" contentBinding="content.playlist" 
p {{content.playlist}} 

然後App.PlaylistView模板的樣子:

#playlist 
    p {{this}} 
    p {{model}} 

這裏是呈現:

<div id="playlists"> 
    <div id="playlist"> 
    <p> 
     <App.PlaylistController:ember456> 
    </p> 
    </div> 
    <p> 
    <App.PlaylistModel:ember454> 
    </p> 
</div> 

我的預期 「#playlist」 DIV通過App.PlaylistModel的實例設置p標籤。不知道爲什麼contentBinding沒有生效。

任何想法?

  • UPDATE *看來,設置controllerBinding勾銷的contentBinding。有沒有辦法設置控制器和視圖中的內容?

回答

0

我認爲將模型加載到控制器是正確的方法。我將假設它是PlayListController,所以它的模型是一個播放列表,並且您有另一個名爲'charts'的屬性與Charts實例。

但是,您應該只使用控制器作爲其上下文(不是內容),並通過該上下文訪問模型。我不會直接混淆其控制器或上下文綁定,也不會將它們視爲不同。如果您確實需要在綁定中指定某些內容,則可以嘗試使用唯一的名稱,例如chartsBinding="controllers.playlist.charts"。你的contentBinding可能很有效。您可以在{{content}}的模板中訪問它,而不是{{this}}

不管怎樣,你可能想嘗試指定控制器作爲視圖的背景一樣:

#playlists 
    App.PlaylistView contextBinding=controller 

然後,在App.PlaylistView模板:

#playlist 
    p {{this}} 
    p {{charts}} 
    p {{model}} 

應該給你:播放控制器(上下文),圖表實例和播放列表實例。