如何查找另一個模型上的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