2013-01-20 16 views
6

Lassen Sie uns sagen, dass ich eine einfache product_orders Sammlung in Meteor haben (_id, user_id, user_name, product_name, price_unit, Menge), und ich möchte alle Aufträge eines einzelnen Benutzers in der Tabelle zeigen, wo jede Zeile enthalten:Wie kann man in Meteor's Template eine einfache Mathematik machen?

user_name, product_name, quantity, price_unit, quantity, price_total (price_unit * quantity) 

Zusätzlich möchte ich eine Gesamtsumme für alle Benutzer Bestellungen anzeigen.

Ich sehe keine einfache Möglichkeit, dies in Handlebars.js Vorlage zu tun, da Lenker scheint keine einfachen mathematischen Operationen zu unterstützen. Ich kann den cursor von product_order einfach zu meiner Vorlage zurückgeben, sehe aber keine einfache Möglichkeit, um price_total und grand total in template zu berechnen.

Ich denke über das Erstellen einer Vorlage Helper von einer Art, aber nicht sicher, ob das die richtige Richtung zu gehen ist. Dieses Problem sieht so aus, als müsste es eine einfache elegante Lösung haben.

Antwort

13

Ja, Sie sollten einen Helfer schreiben. Lenker unterstützt nicht die Verwendung von Logik in den Vorlagen (was eine gute Übung ist, da Sie gezwungen werden, das Muster der Trennung von Sorgen anzuwenden).

Eine Vorlage Helfer sieht wie folgt aus:

Handlebars.registerHelper("grandTotal", function(user_name) { 
    var grandTotal = some_magic_to_calc_total(user_name); 
    return grandTotal; 
}); 

Dann können Sie den Helfer wie diese aus Ihrer Vorlage nennen:

<template name="foo"> 
    {{grandTotal user_name}} 
</template> 

Sie können in der Handlebars.js docs mehr über Helfer lesen.

Verwandte Themen