Отображать значение на десятое место в шаблоне nunjucks?

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

{{ value | round(1) }}

однако я все еще хочу отображать десятое место, если value равно нулю или целому числу. (0,0 вместо 0, 3,0 вместо 3)

Есть ли другой метод или другой способ отобразить все значения с точностью до десятого места?


person Don P    schedule 22.05.2017    source источник


Ответы (2)


Добавьте собственный фильтр

var env = nunjucks.configure(...

env.addFilter('round1', function(num) {
    if (!isNaN(num))
        return '???';

    return parseFloat(num).toFixed(1);    
});

Применение

{{ value | round1 }}
person Aikon Mogwai    schedule 23.05.2017
comment
Приведенная выше логика вернет '???' для всего, потому что оператор if не заключен, а для isNaN логика обратная. - person Don P; 24.05.2017
comment
Ага. Это ошибка. if (isNaN(num)) ... это правильная проверка, конечно. - person Aikon Mogwai; 24.05.2017

Вот логика для пользовательского фильтра, поскольку круглый фильтр не будет поддерживать десятые доли для нуля или целых чисел:

nunjucks.configure().addFilter('tenths', function(num) {
        return parseFloat(num).toFixed(1);
    });

Тогда использование такое же, как и у любого фильтра:

{{ num | tenths }}
person Don P    schedule 23.05.2017