EmberJS sort Array Контроллер объектов - PullRequest
0 голосов
/ 20 февраля 2012

Попытка понять эту концепцию.Если вы сохраняете 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")
    }
})

1 Ответ

0 голосов
/ 21 февраля 2012

Я не вижу этой ошибки в Safari, Chrome или Firefox на OS X, поэтому я предполагаю, что это проблема IE.

Похоже на об этой сообщенной ошибке Ember , которая была исправлена ​​11 дней назад. Попробуйте обновить до ember-latest и посмотрите, исправит ли это.

...