view忽略了contentBinding

时间:2013-09-24 16:35:00

标签: ember.js

我正在构建一个播放列表。我有两个模型描述来自服务器的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没有生效。

有什么想法吗?

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

1 个答案:

答案 0 :(得分: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}}

应该为您提供:播放列表控制器(上下文),图表实例和播放列表实例。