从路由或组件中,我想从存储数据创建一个值数组。例如。我有一个项目模型,我想获取可以在选择框、表格标题中使用的项目名称列表...
我已尝试以下操作并查看了计算属性,但无法使其正常工作?
// user route
model() {
let projects = this.store.findAll('project').then((projects) => {
return projects.mapBy('name');
});
...
<小时/>
更新:
// users.new route
import Ember from 'ember';
export
default Ember.Route.extend({
projectNames: [],
afterModel: function () {
this._super(...arguments);
return this.store.findAll('project').then((projects) => {
this.set('projectNames', projects.mapBy('name'));
});
},
setupController: function (controller) {
this._super(...arguments);
controller.set('projectNames', this.get('projectNames'));
},
model() {
let user = this.store.createRecord('user'),
projectRoles = [],
projects = this.get('projectNames');
console.log('projectNames: ' + this.get('projectNames'));
projects.forEach((project) => {
let projectRole = this.store.createRecord('projectRole', {
project: project,
role: 'Viewer'
});
projectRoles.push(projectRole);
});
// Create 1 role per project
Ember.RSVP.all(projectRoles.map(projectRole => projectRole.save())).then((projectRoles) => {
user.set('projectRoles', projectRoles);
});
return user;
}
}
最佳答案
它不起作用,因为您需要从路由的 model
方法返回一个 Promise 对象。
// return a promise object from the model.
// This is available as the `model` property in the route's controller
model() {
return this.store.findAll('project')
},
// Store the list of names in a property ('projectNames') on the route's
// controller.
setupController(controller, models) {
controller.set('projectNames', models.mapBy('name'));
}
关于javascript - Ember.js - 列出商店中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37762929/