通过Ember JS RSVP哈希循环?

时间:2016-05-29 02:59:32

标签: ember.js rsvp.js

代码说千言万语;有没有办法做我在这里尝试的事情?

用户“根”路线

在顶级加载常见的可选选项,以便在子路由中使用,例如indexshoweditcreate等...

-- /pods/users/route.js

model() {
    return RSVP.hash({
        userCategories: this.store.findAll('user-category'),
        userSources:    this.store.findAll('user-source'),
        userGroups:     this.store.findAll('user-group'),
    });
},

用户“创建”路线

使用/create的子路由我想循环上面已经加载的选项并将它们作为命名变量加载到模板中:

-- /pods/users/create/route.js

setupController(controller, model) {

    let rootModel = this.modelFor('users');

    rootModel.forEach(function (model, name) {
        set(controller, name, model);
    }); <-- THIS IS THE BROKEN PART...

    ...

}

问题

.forEach循环中,我得到Error while processing route: rootModel.forEach is not a function TypeError: rootModel.forEach is not a function

是否存在循环通过该根模型的“Ember Way”,或者我将被困在顶级变量中加载它,即;

-- /pods/users/create/route.js

setupController(controller, model) {

    let rootModel = this.modelFor('users');

    set(controller, 'rootModel', rootModel);

    ...

}

1 个答案:

答案 0 :(得分:4)

Object.keys(rootModel).forEach(function(name) {
  var model = rootModel[keyName];
  set(controller, name, model);
  // ...
});

或者您可能只需要RSVP.hash,但RSVP.all返回一个使用数组解析的promise包含已解析的值?