![](/img/trans.png)
[英]Display the first item in hasMany ember relationship in handlebars template
[英]Ember: Cant access hasMany relation programmatically while it works in handlebars template?
首先要說的是,我對ember來說還很陌生,特別是對於ember-data。 所以也許我在這里錯過了一些基本的入門知識。
有兩種模型: Result
和ResultSubset
。 一個結果可以包含多個子集。
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.