Javascript 恩伯:不能访问有许多关系编程,而它在车把模板工作?

Javascript 恩伯:不能访问有许多关系编程,而它在车把模板工作?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,首先要提到的是,我对余烬非常陌生,尤其是余烬数据。所以我可能遗漏了一些重要的noob东西 有两种模型:Result和resultsbset。结果可以由多个子集组成 result.js: import DS from "ember-data"; var Result = DS.Model.extend({ subsets: DS.hasMany("result_subset", {async: true}) // ... }); Result.reopenClass({ FIXTURE

首先要提到的是,我对余烬非常陌生,尤其是余烬数据。所以我可能遗漏了一些重要的noob东西

有两种模型:
Result
resultsbset
。结果可以由多个子集组成

result.js:

import DS from "ember-data";
var Result = DS.Model.extend({
  subsets: DS.hasMany("result_subset", {async: true})
  // ...
});
Result.reopenClass({
  FIXTURES: [{id: 1, subsets: [1, 2]}]
});
export default Result;
result-subset.js:

import DS from "ember-data";
var ResultSubset = DS.Model.extend( {
  result: DS.belongsTo("result", {async:true}),
  singleValue: DS.attr("number")
  // ...
});
ResultSubset.reopenClass({
  FIXTURES: [
    {id: 1, result: 1, singleValue: 21},
    {id: 2, result: 1, singleValue: 42}
  ]
});
export default ResultSubset;
当我从hbs模板中访问模型时,一切正常,如下所示:

{{#each subset in result.subsets}}
    {{subset.singleValue}}
{{/each}}
另一方面,当我以编程方式尝试它时(在视图/组件中),
子集
是未定义的

// ...
console.log(this.get("result")); // works
console.log(this.get("result").get("subsets")); // undefined
// ...
我正在运行Ember 1.7和Ember data 1.0.0-beta.9


我错过了什么?提前谢谢

您需要像这样解析结果对象:

this.get('result').then(function(resolvedResult) {
    resolvedResult.get('subsets').then(function (resolvedSubsets) {
        resolvedSubsets.forEach(function(subset) {
            console.log(subset);
        });
    }, function(subsetReject) { /* handle error here */ });
}, function (resultReject) { /* handle error here */ });
记住,余烬中的关系是
Promise
s,因此您需要处理这些关系。车把会自动解析这些关系