Как я могу умножить данные в nunjuncks? - PullRequest
0 голосов
/ 15 декабря 2018

например

 <div class="price">{{blocks.quantity}} x {{blocks.price}} </div>

Я хочу умножить цену на количество

данных из файла Json.

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018
var nunjucks  = require('nunjucks');
var env = nunjucks.configure();

env.addFilter('mysum', function (arr) {
    return arr
        .map(e => e.quantity * e.price) // get amount to each e
        .reduce((sum, e) => sum + e, 0) // calc total summa
});

var data = [
    {price: 10, quantity: 2},
    {price: 2, quantity: 7},
    {price: 5, quantity: 11}
]

var res = env.renderString(`{{ data | mysum }}`, {data});

console.log(res);
0 голосов
/ 11 января 2019

Есть несколько способов сделать это, включая создание фильтров.

Одним простым способом было бы определить его в шаблоне, где вы будете использовать значение:

{% set total_price = blocks.quantity * blocks.price %}

Вы можетезатем произнесите:

I will sell you {{ blocks.quantity }} apples for {{ blocks.price }} each, the 
total price will be {{ total_price }}.

Затем вы можете использовать это в логике:

{% if total_price > 100 %}
  Price per apple is {{ blocks.price }}
{% else %}
  Price per apple is {{ blocks.price * 0.9 }}
{% endif %}

Наконец, вы можете просто выразить это как {{blocks.quantity*blocks.price}}, как уже сказал предыдущий комментатор Sauntimo.

0 голосов
/ 15 декабря 2018

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

<div class="price">{{blocks.quantity*blocks.price}}</div>

См. Документы в https://mozilla.github.io/nunjucks/templating.html#math

...