2015-08-31 2 views
0

У меня есть объект, представляющий собой набор данных. по каждому пункту есть - имя - DATE_CREATED - ценаVue.js orderBy decimal

я могу получить OrderBy в Vue.js работать на имя и DATE_CREATED, но это не похоже на работу для цены. Цены хранятся в поплавках. 34.00, 12.00 0.00 и т. Д.

Есть ли что-нибудь особенное, что мне нужно сделать здесь?

Я пробовал обновлять vue до последней версии, но до сих пор не исправил.

Когда я заказываю «цену», он переупорядочивает предметы, но не в правильном направлении. В настоящее время он заказывает 4 предмета, как указано ниже;

0.00 
57.00 
7.00 
88.40 

Реверсирование этого заказа будет выполнять вышеуказанное, но наоборот.

Спасибо за любой свет, который может пролить на него.

+0

Такого рода упорядочение выглядит на основе строк. Действительно ли ваши цены хранятся как плавающие или они на самом деле являются строками? –

+0

цены были сохранены в поплавках. Я изменил базу данных, чтобы сохранить их в значениях INT, которые теперь исправили проблему orderBy. – mbklnd

ответ

1

Возможно, вы отсортированы как строка, а не цифра.

Если вы пытаетесь сортировать по десятичных знаков, он отлично работает (в том числе некоторые десятичного форматированием):

var demo = new Vue({ 
    el: '#demo', 
    data: { 
    items: [ 
     { price: 0.00 }, 
     { price: 57.00 }, 
     { price: 7.00 }, 
     { price: 88.40 } 
    ] 
    } 
}); 

<ul id="demo"> 
    <li v-repeat="items | orderBy 'price'" > 
    {{price.toFixed(2);}} 
    </li> 
</ul> 

Fiddle: http://jsfiddle.net/56LLvvw8/

+0

Спасибо, что подтвердили, что он работает. Оказалось, что я сохранял десятичную дробь в БД как тип «DECIMAL». Как только я изменил это на «FLOAT», все показалось, что все работает нормально. – mbklnd

Смежные вопросы