我无法使用ember #each循环一个Object-Array

时间:2013-11-19 01:46:03

标签: ember.js each handlebars.js

<div class="nav-menu clearfix">
    <ul class="list-unstyled list-inline">
        {{#each MI in MB}}
            <li id=""><span>{{ MI.MText }}</span></li>
        {{else}}
            {{MB}}
        {{/each}}
    </ul>
</div>

我希望将MB与每个循环。

但它不起作用并返回MB是空的。

但我得到了其他的。

  

[object Object],[object Object],[object Object],[object   对象],[对象对象]

这是我的路线定义

//application路由
App.ApplicationRoute = Ember.Route.extend(App.LazyLoadTemplate, {
    model : function() {
        return Ember.$.getJSON("/index/indexjson");
    }
});

获取json数据

{
    'UIB':{...},
    'MB':[{...},{...},...,{...}]
}

我的英语不好,谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

如您所见,您的财产范围不正确。只是为了直接设置记录,Ember-Handlebars不会像在数组上那样迭代一个对象。另外,else语句是完全合法的,当迭代的数组为空时它将被触发(null / undefined / no elements)

{{#each item in model}}
   {{item}}
{{else}}
   No Items
{{/each}}

http://emberjs.jsbin.com/iWohUlE/1/edit

答案 1 :(得分:0)

编辑为主人在他的回答中指出,这个回应引用了错误版本的把手。

您在模板中滥用了块助手each。把手each与对象和数组的工作方式类似。此外,您在else块之外有一个if。重写您的模板如下:

<div class="nav-menu clearfix">
    <ul class="list-unstyled list-inline">
        {{#each MB}}
            <li id=""><span>{{ MText }}</span></li>
        {{/each}}
    </ul>
</div>

Fiddle example