是否有可能在Emberjs中循环计算出的数组?

时间:2012-03-13 04:21:01

标签: ember.js handlebars.js

我试图在手柄中循环计算属性数组。在这个例子中,我可以为普通数组,但不是计算数组: http://jsfiddle.net/gh7Qr/

在句柄中循环计算属性的正确语法应该是什么?

1 个答案:

答案 0 :(得分:5)

是的,有可能。但是你忘记了return你的计算数组,你必须将cacheable()添加到计算属性,它们返回一个对象而不是一个基元。否则你将遇到一个无限循环(参见讨论https://github.com/emberjs/ember.js/issues/38)另外看看戈登·亨普顿关于当前Ember.js陷阱的优秀blog post,其中包括有关计算属性的问题。但是,自提交626d23f以来,已经解决了可缓存的问题。

您的代码的更正示例如下:http://jsfiddle.net/gh7Qr/4/

<强>车把:

<script type="text/x-handlebars" >
    {{#each App.games}}
        {{this}}
    {{/each}}
    {{#each App.gamesA}}
        {{this}}
    {{/each}}
</script>

<强> JavaScript的:

App = Ember.Application.create({
    games: [1, 2, 3],
    gamesA: Em.computed(function() {
        return this.get('games').map(function(game) {
            return game + 'a';
        })
    }).property('games').cacheable()
});​