您好我有以下路线:
MB3.PlaylistRoute = Ember.Route.extend({
model: function(params) {
return MB3.Playlist.find(params.playlist_id);
}
});
播放列表中包含有轨道的hasMany实现。在播放列表视图中,我想用播放列表的第一首曲目的属性做一些逻辑。
所以我添加了这段代码:
MB3.PlaylistView = Ember.View.extend({
didInsertElement: function() {
console.log(this.get("controller.tracks").objectAt(0).get("title"));
}
});
问题是标题是未定义的(我认为因为它尚未加载。我尝试的第二件事是等待didLoad事件:
MB3.PlaylistView = Ember.View.extend({
didInsertElement: function() {
var self=this;
this.get("controller.tracks").on("didLoad", function() {
console.log(self.get("controller.tracks").objectAt(0).get("title"));
});
}
});
但是这也记录为null。我如何实现这一目标?
答案 0 :(得分:3)
就像Adrien在评论中所说,似乎你遇到了issue 587。也就是说,在这种情况下,我认为你实际上并不需要“didLoad”回调。相反,尝试使用计算属性来获取video_id或曲目标题。例如:
MB3.PlaylistView = Ember.View.extend({
firstTrackTitle: function() {
return this.get('controller.tracks.firstObject.title');
}.property('controller.tracks.firstObject.title')
});
然后在您的模板中,如果定义了此属性,则嵌入播放器:
{{#if view.firstTrackTitle}}
embed code here
{{/if}}
FWIW我会把这个逻辑放在控制器而不是视图中,但同样的想法。