首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >呈现前不解析Ember.js hasMany关系

呈现前不解析Ember.js hasMany关系
EN

Stack Overflow用户
提问于 2014-07-07 23:32:47
回答 1查看 1.1K关注 0票数 1

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

模板:

代码语言:javascript
复制
<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模型:

代码语言:javascript
复制
var DisplayItem = DS.Model.extend({
    name: DS.attr("name"),
    display: DS.belongsTo("display", {async: true})
});

图表模型:

代码语言:javascript
复制
var Chart = DisplayItem.extend({
    views: DS.hasMany("view", {async: true})
});

视图模型:

代码语言:javascript
复制
var View = DS.Model.extend({
    name: DS.attr("string"),
    chart: DS.belongsTo("chart", {async: true})
});

相关夹具数据:

代码语言:javascript
复制
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
        }
    ];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-07 23:49:15

要回答你的问题,路线是最简单的地方。使用嵌套承诺,Ember不会设置控制器等,直到最深的承诺已经解决。

代码语言:javascript
复制
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

代码语言:javascript
复制
<li>{{view.name}}</li>

http://emberjs.jsbin.com/OxIDiVU/790/edit

view通常是指与当前模板相关的视图,等等。

代码语言:javascript
复制
    {{#each item in views}}
        <li>{{item}}</li>
    {{/each}}

http://emberjs.jsbin.com/OxIDiVU/791/edit

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24621550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档