如何查找另一个模型上的hasMany关系中的记录?我可能过于复杂的东西,但这是一个简短的例子。如何迭代控制器中的Ember.PromiseArray
两个模型,user
和playlist
- 用户可以喜欢的播放列表。
我想更改最喜欢的按钮,以允许用户'不喜欢'。为此,我需要检查当前播放列表模型(我在播放列表路径中)是否位于user.favoritePlaylist数组中(以更改最喜欢的按钮)。
这工作,并自动解决了playlist.hbs:
{{#each playlist in user.playlistFavorites}}{{playlist.title}}{{/each}}
但在我的控制器相同的属性没有得到解决,因为它是一个Ember.PromiseArray,据我可以告诉。如何判断用户是否已经收看该播放列表?
的模型是这样的:
// models/user.js
export default DS.Model.extend({
name: DS.attr('string'),
playlists: DS.hasMany('playlist', {async: true }),
favoritePlaylists: DS.hasMany('playlist', { inverse: null, async: true })
});
// models/playlist.js
export default DS.Model.extend({
title: DS.attr('string'),
tracks: DS.hasMany('track', { async: true }),
user: DS.belongsTo('user', { inverse: 'playlists' })
});```
我在这里尝试一些伪代码,没有运气。
isFavorite: function() {
var playlist = this.get('model');
var userFavs = this.get('auth.user.favoritePlaylists');
if (userFavs.contains(playlist) {
// playlist already a favorite
}
}.property('model', 'auth.user')
播放列表路由器由Ember生成。我有一个名为'auth'的初始化程序,我在登录时将'user'属性设置为用户模型,因此我可以在播放列表控制器上执行this.get('auth.user')
。 auth初始化器设置为运行after: 'store'
并注入到每个路由和控制器中。
你介意添加路由/控制器/模板吗?我正在试图围绕这里的背景环绕我的头。从这里的一个模板创建一个示例(http://stackoverflow.com/tags/ember.js/info)将更好 – Kingpin2k 2014-09-21 18:19:19
谢谢,在路由器,控制器上添加了一个注释,以及我如何通过我的用户访问该用户'auth'初始化程序。 – donleche 2014-09-21 18:37:33