Ember需要模型中一个承诺的数据,用于model()

时间:2017-05-26 13:31:52

标签: javascript ember.js

因此,所有路线的此应用程序模型都设置如下:

  model(params) {
    let config = this.get('store').findRecord(params.config_type, params.config_id);
    let c = Ember.RSVP.hash({config});
    console.log('aa');
    console.log(c);
    let devices = this.get('store').findAllOfType('device', ENV.CFG_TYPE[params.config_type]);
    let licenses = this.get('store').findAll('license');

    return Ember.RSVP.hash({
      configType: params.config_type,
      config: config,
      devices: devices,
      licenses: licenses
    });
  },

我需要更改设备查询以使用第二个条件,该条件保存在第一个查询返回的配置中。唯一的问题是这个问题没有解决,也没有数据。

当我注销c时,我看到最初未定义_results属性,然后当我展开它时,它会显示配置对象。

我意识到这是因为承诺尚未解决,并且将来某个时候得到解决,但我需要这些数据来获得正确的设备。我不想将它们作为查询参数传递,因为这些是我需要的两个独立的数据。

我以为我可以在配置行上执行.then()并在那里返回Ember.RSVP.hash但是会将它返回到model()并且我不确定如何从那里返回它,或者如果它甚至会从那里返回,或者如果配置现在等于RSVP哈希而不是配置承诺/对象。

我的选择是:

  1. 找到一种方法将它以某种方式从模型中已经具有相同配置对象的一条路径传递到此路径,而不使用查询参数

  2. 以某种方式在第一个查询的回调中设置整个模型(findRecord()一个)

  3. 完全不知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

我试过了,请看一下,

model(params) {
        return this.get('store').findRecord(params.config_type, params.config_id).then(resultantConfig => {
            //resultantConfig use this to get exact property which is going to be used for the below queries.
            return Ember.RSVP.hash({
                configType: params.config_type,
                config: resultantConfig,
                //findAllOfType - i am not heard of this method, i guess it would query, as you need to set condition.
                devices: this.get('store').query('device', {configType:resultantConfig.config_type}),
                licenses: this.get('store').findAll('license')
            });
        });
    }