- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SoundCloud 的 API 编写一个音乐播放器组件,其中包含 SoundCloud 中最喜欢的歌曲
我想在上一首歌曲播放完后自动播放下一首最喜欢的歌曲。
这个想法是创建一个新属性来表示我所有收藏夹的数组,以传递 nextFavorite
这是我的播放器 Controller
sortedFavorites: Ember.computed.alias('favorites’),
和
actions: {
selectFavorite: function(favorite, index, play) {
if (!this.get('externalPlay')) {
index = index + 1;
nextFavorite = this.get('sortedFavorites').nextObject(index, favorite);
self.set('nextFavorite', nextFavorite);
}
return SC.stream(favoritePath, {
onfinish: function() {
self.set('isPlaying', false);
if (self.get('nextFavorite') != null) {
return self.send('selectFavorite', self.get('nextFavorite'), index);
}
}
}
}
}
}
当我创建一个新属性“favorites”的别名时,它是未定义的
如果我为单个收藏夹创建别名,我可以访问我的单个收藏夹,尽管这不是我需要做的
我的问题是最喜欢的模型没有指向 DS.Model
的 DS.hasMany
所以我不知道如何计算
这是最喜欢的模型
import DS from 'ember-data';
var Favorite = DS.Model.extend({
duration: DS.attr('string'),
title: DS.attr('string'),
genre: DS.attr('string'),
artwork_url: DS.attr('string'),
uri: DS.attr('string'),
users: DS.hasMany('user')
});
export default Favorite;
那么,sortedFavorites 如何成为我所有收藏夹的数组,以便访问 nextObject(收藏夹)?
路线
var MusicRoute = Ember.Route.extend({
needs: ['player'],
player: Ember.computed.alias('controllers.player'),
beforeModel: function() {
return SC.initialize({
client_id: window.soundcloud_api_key,
redirect_url: '#'
});
},
model: function(params) {
var artist, self, ret;
self = this;
artist = params.artist;
ret = [];
this.controllerFor('application').set('artistName', artist);
return new Ember.RSVP.Promise(function(resolve, reject) {
return SC.get("/users/" + 'mannaio' + "/favorites", {
limit: 40
}, function(favorites) {
if (favorites.length) {
favorites.forEach(function(item) {
var favorite;
favorite = self.createFavoritelist(item);
ret.push(favorite);
favorite.user = self.createUser(item.user);
});
resolve(ret);
} else {
return reject(self.errorHandler(artist));
}
});
});
},
setupController: function(controller, model) {
var favorite ;
this._super(controller, model);
favorite = model.get('firstObject');
this.controllerFor('player').set('favorite', favorite).send('selectFavorite', favorite, 0, false);
return controller;
},
renderTemplate: function() {
this._super();
return this.render('player', {
into: 'music',
outlet: 'player',
controller: 'player'
});
},
createFavoritelist: function(favorite) {
return this.store.createRecord('favorite', {
id: favorite.id,
title: favorite.title,
duration: favorite.duration,
uri: favorite.uri,
artwork_url: favorite.artwork_url,
genre: favorite.genre,
});
},
createUser: function(user) {
return this.store.createRecord('user', {
username: user.username,
avatar_url: user.avatar_url,
});
},
});
最佳答案
看起来收藏夹并没有真正定义?
也许可以在模型上创建一个别名(如果您想要别名),或者如果不需要,则创建一个副本?
此外,您不必从 setupController 返回 Controller ..
尝试在收藏夹 Controller 上设置模型?
self.controllerFor('player').set('favorites', model);
在您的设置 Controller 中,因此您不需要第二个别名。
如果这不起作用,您还可以尝试让播放器 Controller 访问音乐 Controller (我假设那是音乐 Controller )添加:
needs : 'music'
然后您应该可以访问音乐 Controller :
this.get('controller.music.model') -> favorites
到播放 Controller ,您应该可以访问音乐模型,它看起来像您最喜欢的..
http://guides.emberjs.com/v1.10.0/controllers/dependencies-between-controllers/
关于javascript - 在 Ember 中表示模型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086653/
我正在尝试将 ember-models 链接到 ember-table,以从服务器提取分页记录,并在向下滚动时将它们添加到表中。 我可以通过请求我的 api url 和页码来让它工作,就像 http:
我有一个应用程序,它使用 ember-data 来持久化数据和 StateManager 来驱动其全局状态。由于加载数据是异步的,我想知道如何捕获表示所有数据都已加载的事件。 准确地说,我有一个名为“
我有一个简单的 Ember 应用程序,其中有一个输入框、两个选择框和一个按钮。我可以在“doSearch”方法中访问输入框的值,但不能访问选择框的值。 到目前为止,我没有尝试任何工作 - 我注释掉了我
我使用 Ember-CLI 来构建我的 ember 应用程序,但我不想使用 Ember Data。 默认情况下,当你输入这个命令:ember generate model Person 时,ember
我按照 Ember CLI 主页的说明创建了我的第一个 Ember CLI 插件。该插件运行良好,并且已经在 Github 上获得了几颗星:https://github.com/lolmaus/emb
我在这里看到的以前的问题似乎都没有涵盖何时使用 Ember 计算属性与 Ember Observer 的主题。我知道计算属性使用以前的属性来帮助生成新属性并在运行循环中更新。 Person = Emb
我一直在 git 分支上切换到 1.13.2 版本的 ember,现在我想在返回另一个分支时回到 1.11.1。 我一直在运行npm install和 bower install没有失败。 但是当我运
我有一个使用 ember-cli 构建的 Ember 应用程序我正在使用 ember-qunit 编写我的测试使用 testem 测试适配器并在浏览器中运行它们按照 ember-cli 中的说明文档。
项目设置: Ember:2.0.0 Ember 数据:2.0.0 Ember-cli:1.13.8 我创建了一个转换:转换/isodate.js import DS from 'ember-data'
假设我有一个具有 2 个属性的组件:我如何能够基于 localID 属性和 Ember.compulated.filterBy 宏创建计算属性? localID: 2, data: [ { i
我刚刚创建了一个新的 Ember-CLI app (v0.1.12),并注意到 Ember 的引用版本是 v1.8.1 (bower.json)。我想要 recently released 1.10我
使用最新的 Ember (3.2)、ember-cli-mirage 0.4.7、ember-cli-qunit 4.3.2、ember-qunit 3.4.1 我正在使用 ember-cli-mir
我是一名 ember 菜鸟,正在阅读 ember-cli 101 这本书。迄今为止,我一直在 ember-cli 网站 here 上使用升级工作流程。 。 在终端中使用 ember-cli 帮助时,我
如何测试我的组件,将 ember-data 模型作为 props 传递给它? 例如: {{#queue/review/moderatable-text model=activity property=
Ember 对象和 Ember Data 中的对象有什么区别?我知道当服务器上有一些数据时我应该使用 Ember Data 模型,但是我应该何时何地使用它们中的任何一个? 最佳答案 注意:这很长,有偏
执行ember -v仅显示ember cli版本。 如何查看 ember.js 版本和 ember 数据版本? 最佳答案 ember.js 和 ember-data 的版本由应用的依赖项决定。 Bow
我正在尝试在 Ember.RSVP.all 内执行 promise App.Foo = Ember.Object.create({ bar: function() { var
访问 ember 对象属性的首选方法是什么?我经常看到 .get() 方法被使用,但想知道为什么人们不只是使用点表示法。例如在 Advice in the Use of Ember Trek 先生写道
我知道 Ember 有一个记录器,但我想创建自己的用于学习目的。我有一个名为 logger 的服务,我希望能够在任何地方使用这个服务。将此服务注入(inject)到组件、 Controller 等中没
我刚刚关注了 ember-cli 主页上的“入门”帖子。 我安装了 ember 0.1.2、bower、phantomjs 等。 但是,我创建了我的应用程序,当我运行“ember server”时,它
我是一名优秀的程序员,十分优秀!