Сортировать по полю поплавок

0

У меня есть приложение в позвоночнике, где я хочу сортировать коллекцию в базе с поплавком, но вместо этого сделать что-то вроде этого:
- 9,90
- 12,50
- 100,50
- 110,50

выполните следующие действия:
- 100,50
- 110,50
- 12,50
- 9,90

это моя модель:

 LanguageModel = Backbone.Model.extend({});

моя коллекция:

 LanguageCollection = Backbone.Collection.extend({
            model: LanguageModel,
            sort_key: 'price', // default sort key
            initData: function(data){
                return data;
            },
            comparator: function (item) {
                return item.get(this.sort_key);
            },
            sortByField: function (fieldName) {
                this.sort_key = fieldName;
                this.sort();
            }
        });

мой взгляд:

var TourView = Backbone.View.extend({ 
        initialize: function(){ 
            this.collection_language = new LanguageCollection(); 

            var self = this;
            var success = function(){
                self.render(); 
            };
            var lang = this.importLanguages();

            $.when( lang).done(success);
        }, 
        importLanguages: function(){
            var languages = this.collection_language.initData(jQuery.parseJSON($('#json-languages').html()));
            this.collection_language.set(languages);

            return true;
        },
        render: function(){
            $.each(this.collection_language.models, function( key, value ) {
                value.attributes.price = parseFloat(value.attributes.price).toFixed(2);
            });

            this.collection_language.sortByField('price');
            console.log(this.collection_language);
        } 
    });

В моем представлении я попытался разобрать коллекцию и конвертировать цену в float на заказ, но это не решает мою проблему

$.each(this.collection_language.models, function( key, value ) {
                    value.attributes.price = parseFloat(value.attributes.price).toFixed(2);
                });

                this.collection_language.sortByField('price');
Теги:
backbone.js

2 ответа

0
Лучший ответ

Найти проблему, это toFixed(2) внутри функции заказа.

Я изменил это:

$.each(this.collection_language.models, function( key, value ) {
     value.attributes.price = parseFloat(value.attributes.price).toFixed(2);
});

к этому:

$.each(this.collection_language.models, function( key, value ) {
     value.attributes.price = parseFloat(value.attributes.price);
});

Прекрасно работает

0

Кажется, что логика сортировки в порядке. Сортировка по другим полям работает так, как ожидалось? Я просто хочу предложить конвертировать цену на этапе инициализации. И лучшим местом для этого является метод parse модели:

parse : function (data) {
  data.price = +data.price;
  return data;
}
  • 0
    Да, другая сортировка работает нормально. Только это поплавковое поле. Как можно скорее я добавляю ваше предложение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню