Debe ordenar manualmente las matrices, incluido el contenido de cualquier controlador de matriz, en Ember. Siempre puede reemplazar content
con su matriz ordenada en lugar de mantener ambas matrices.
actualización
Aquí es un ejemplo de lo que creo que está buscando: http://jsfiddle.net/ud3323/yjs8D/
Actualización # 2
Actualizado este ejemplo para utilizar los nuevos cambios de contexto vista. https://gist.github.com/2494968
Manillar
<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({});
posible duplicado de [Ordenar matriz de objetos EmberJS por la propiedad] (http://stackoverflow.com/questions/9041505/sort-array-of-emberjs-objects-by-property) –