Попытка понять эту концепцию.Если вы сохраняете console.log this.get («content») до и после сортировки, все выглядит так, как будто оно работает, но когда оно отображается на экране, оно становится забавным.Я думаю, что проблема с рулем.Когда он "сортирует", он добавляет дубликат четвертой записи и прикрепляет его вверху.Вы можете увидеть проблему в действии здесь:
http://jsfiddle.net/skinneejoe/Qpkz5/78/ (щелкните текст «Сортировка по возрасту» пару раз, чтобы просмотреть записи, и вы увидите проблемы)
Я делаю что-то не так, есть ли лучший способ, или это ошибка?Если это ошибка, есть ли хороший обходной путь?
Вот полный код:
index.html
<script type="text/x-handlebars">
{{#view App.SortView}}Sort by Age{{/view}}<br/>
{{#each App.userController}}
{{#view App.RecordView contentBinding="this"}}
{{content.name}} - {{content.age}}
{{/view}}
{{/each}}
</script>
app.js
window.App = Ember.Application.create();
App.userController = Ember.ArrayController.create({
content: [
Ember.Object.create({ name:"Jeff", age:24 }),
Ember.Object.create({ name:"Mark", age:32 }),
Ember.Object.create({ name:"Jim", age:12 })
],
sort:"desc",
sortContent:function() {
if (this.get("sort") == "desc") {
this.set("sort", "asc");
} else {
this.set("sort","desc")
}
if (this.get("sort") == "asc") {
var sortedContent = this.get("content").sort( function(a,b){
return a.get("age") - b.get("age");
})
} else {
var sortedContent = this.get("content").sort( function(a,b){
return b.get("age") - a.get("age");
})
}
this.set("content", []);
this.set("content",sortedContent)
}
})
App.RecordView = Ember.View.extend({})
App.SortView = Ember.View.extend({
click: function() {
App.userController.sortContent("poId")
}
})