2013-09-24 132 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}} 

应该给你:播放控制器(上下文),图表实例和播放列表实例。