javascript - Ember.js - 列出商店中的值

标签 javascript ember.js

从路由或组件中,我想从存储数据创建一个值数组。例如。我有一个项目模型,我想获取可以在选择框、表格标题中使用的项目名称列表...

我已尝试以下操作并查看了计算属性,但无法使其正常工作?

// 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/

相关文章:

javascript - 在 Ember.js 中集成测试路由模板

javascript - 在 Ember 中,this 和 this.controller 有什么区别

ember.js - Ember Handlebars 辅助 View 未更新

javascript - .every 方法不将所有元素与 IF 语句匹配

javascript - 如何在 onkeydown 事件后处理文本框中的新内容?

javascript - 服务条款 Javascript 警报框

javascript - 在输入时触发焦点事件时使 HTML5 数据列表可见

javascript - backbone.js 事件绑定(bind)破坏了单选按钮的功能

ember.js - 如何使用操作助手访问 ember 1.0 pre 中的特定上下文

Ember.js:如何将依赖项注入(inject)适配器?