簡體   English   中英

Ember:在句柄模板中工作時,不能以編程方式訪問hasMany關系嗎?

[英]Ember: Cant access hasMany relation programmatically while it works in handlebars template?

首先要說的是,我對ember來說還很陌生,特別是對於ember-data。 所以也許我在這里錯過了一些基本的入門知識。

有兩種模型: ResultResultSubset 一個結果可以包含多個子集。

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;

結果,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}}

另一方面,當我通過編程方式嘗試(在視圖/組件內部)時, subsets是未定義的。

// ...
console.log(this.get("result")); // works
console.log(this.get("result").get("subsets")); // undefined
// ...

我正在運行Ember 1.7和ember-data 1.0.0-beta.9

我想念什么? 提前致謝!

您需要像這樣解決Result對象:

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 */ });

請記住,Ember中的關系是Promise ,因此您需要進行處理。 車把自動解決這些關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM