2012-03-18 10 views
3

私はArrayControllerに検索用語のリストを保存しています。検索用語を最新のものから最新のものに表示したいデフォルトでEmberはそれらを順番に出力します。内容の配列を逆にする

あなたはここに私の現在の実装を見ることができます:http://andymatthews.net/code/emberTweets/

そしてここでは、適切なコードです。

{{#each App.recentUsersArray.reverse}} 
    <li> 
     <a href="#" title="view again" {{action "searchAgain" target="App.recentUsersArray"}}>{{this}}</a> 
    </li> 
{{/each}} 

App.recentUsersArray = Em.ArrayController.create({ 
    content: [], 
    reverse: function(){ 
     return this.content.reverse(); 
    }.property(), 
}); 

私はproperty()メソッドを使用して逆にしようとしていますが、動作していないことがわかります。私は何か間違っているのですか?

答えて

6

プロパティにアクセスするには、常にgetsetを使用する必要があります。また、計算されたプロパティが他のプロパティに依存する場合は、property宣言にこれらを追加する必要があります。 cacheableの使用は、次のリリースのemberでは省略できます。discussionを参照してください。あなたは、実例hereを見ることができます。

reverse: function(){ 
    return this.get('content').toArray().reverse(); 
}.property('[email protected]').cacheable() 

また、アレイ上unshiftObjectメソッドを使用して、ここに計算されたプロパティを作成する回避、http://jsfiddle.net/ez7bV/を見ることができました。

+1

これは古いですが、reverseObjects()が利用可能で、reverse()のように動作しますが、KVOに準拠していることは分かります。 – skaterdav85

+0

'reverseObjects'はこれを行うための祝福された方法です:http://emberjs.com/api/classes/Ember.MutableArray.html#method_reverseObjects。 'Ember.MutableArray'の一部であることに注意してください。 –

関連する問題