È necessario ordinare manualmente gli array, incluso il contenuto di qualsiasi controller dell'array, in Ember. È sempre possibile sostituire content
con la matrice ordinata invece di mantenere entrambi gli array.
Aggiornamento
Ecco un esempio di quello che penso che stai cercando: http://jsfiddle.net/ud3323/yjs8D/
Aggiornamento # 2
Aggiornato questo esempio per utilizzare le nuove modifiche vista di contesto. https://gist.github.com/2494968
Manubrio
<script type="text/x-handlebars" >
Will Display and Sort by Age (after 2 sec)<br/><br/>
{{#each App.userController}}
{{#view App.RecordView}}
{{name}} - {{age}}
{{/view}}
{{/each}}
</script>
JavaScript
App = Ember.Application.create({
ready: function() {
Ember.run.later(this, function() {
Ember.run.later(this, function() {
App.get('userController').set('content', [
Ember.Object.create({ name:"Jeff", age:24 }),
Ember.Object.create({ name:"Sue", age:32 }),
Ember.Object.create({ name:"Jim", age:12 })
]);
}, 2000);
Ember.run.later(this, function() {
// Make the controller's content sort again in reverse this time
App.userController.notifyPropertyChange('content');
}, 4000);
}
});
App.userController = Ember.ArrayController.create({
content: [],
contentDidChange: Ember.observer(function(userCtr, prop) {
if(!Ember.empty(this.get('content'))) {
console.log('about to begin sort');
this.sortContent();
}
this._super();
}, 'content'),
sort:"desc",
sortContent:function() {
var content = this.get("content"), sortedContent;
if (this.get("sort") == "desc") {
this.set("sort", "asc");
sortedContent = content.sort(function(a,b){
return a.get("age") - b.get("age");
});
} else {
this.set("sort","desc");
sortedContent = content.sort(function(a,b){
return b.get("age") - a.get("age");
});
}
this.set("content",sortedContent);
}
});
App.RecordView = Ember.View.extend({});
fonte
2012-05-08 14:42:39
possibile duplicato del [Sort array di oggetti EmberJS dalla proprietà] (http://stackoverflow.com/questions/9041505/sort-array-of-emberjs-objects-by-property) –