当我试图使用view扶手呈现包含在chart模型中的each模型的列表时,view模型的允诺数组在each助手呈现之前不会解析,留下的是空白的li:

模板:
<script type="text/x-handlebars" id="chart-container">
{{views}}
<ul>
{{#each view in views}}
<li>{{view}}</li>
{{/each}}
</ul>
</script>奇怪的是,如果我将each助手更改为{{#each views}},它就能正常工作。
在使用hasMany助手的view in views解决了承诺的each关系之后,如何使视图呈现?以下是相关的模型和装置:
displayItem模型:
var DisplayItem = DS.Model.extend({
name: DS.attr("name"),
display: DS.belongsTo("display", {async: true})
});图表模型:
var Chart = DisplayItem.extend({
views: DS.hasMany("view", {async: true})
});视图模型:
var View = DS.Model.extend({
name: DS.attr("string"),
chart: DS.belongsTo("chart", {async: true})
});相关夹具数据:
Chart.FIXTURES = [
{
id: 1,
name: "Derp",
display: 1,
views: [1, 2],
defaultView: 1
}
];
View.FIXTURES = [
{
id: 1,
name: "Test 1",
chart: 1
},
{
id: 2,
name: "Test 2",
chart: 1
}
];发布于 2014-07-07 23:49:15
要回答你的问题,路线是最简单的地方。使用嵌套承诺,Ember不会设置控制器等,直到最深的承诺已经解决。
App.ChartContainerRoute = Em.Route.extend({
model: function(){
return this.store.find('chart').then(function(charts){
return Em.RSVP.all(charts.getEach('views')).then(function(){
return charts;
});
});
}re
});通常,我建议不要等待所有异步调用(因为Ember将异步地将它们注入页面)。如果您试图修改视图后,它已经插入,有其他模式可以解决这个问题,同时提供一个更有反应的感觉应用程序。
你看到的真正的问题
您没有在li中指定任何要显示的内容,而是使用关键字view
<li>{{view.name}}</li>http://emberjs.jsbin.com/OxIDiVU/790/edit
view通常是指与当前模板相关的视图,等等。
{{#each item in views}}
<li>{{item}}</li>
{{/each}}http://emberjs.jsbin.com/OxIDiVU/791/edit
https://stackoverflow.com/questions/24621550
复制相似问题