1

我正在建立一个播放列表。我有两个模型描述来自服务器的 json 响应

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-tag。不知道为什么 contentBinding 没有生效。

有任何想法吗?

  • 更新* 设置 controllerBinding 似乎会使 contentBinding 无效。有没有办法在视图中设置控制器和内容?
4

1 回答 1

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}}

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

于 2013-09-26T06:57:36.103 回答