Да, это возможно. Но вы забыли return
ваш вычисленный массив, и вы должны добавить cacheable()
к вычисленным свойствам, которые возвращают объект, а не примитив. В противном случае вы столкнетесь с бесконечным циклом (см. Обсуждение https://github.com/emberjs/ember.js/issues/38). Также посмотрите на превосходный blog post Гордон Хемптон о текущих Ember.js gotchas, среди прочих, относительно вычисленных свойств. Однако после фиксации 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()
});
Спасибо! Я переводил с coffeescript и забыл о возвращении. Кэшируемость - это то, что меня достало –