2013-01-20 67 views
6

Hãy nói rằng tôi có một bộ sưu tập product_orders đơn giản trong Meteor (_id, user_id, user_name, PRODUCT_NAME, price_unit, số lượng) và tôi muốn hiển thị tất cả các đơn đặt hàng của một người dùng duy nhất trong bảng mà mỗi dòng nên chứa:Làm cách nào để thực hiện một số phép toán đơn giản trong mẫu của Meteor?

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

Ngoài ra, tôi muốn hiển thị tổng số lớn cho tất cả các đơn đặt hàng của người dùng.

Tôi không thấy cách dễ dàng để thực hiện việc này trong mẫu Handlebars.js dưới dạng Handlebars không xuất hiện để hỗ trợ các phép toán đơn giản. Tôi có thể dễ dàng trả về con trỏ của product_order cho mẫu của tôi nhưng không thấy cách dễ dàng để tính giá_total và tổng số lớn trong mẫu.

Tôi đang nghĩ đến việc tạo một trình trợ giúp mẫu của một số loại nhưng không chắc chắn nếu đó là hướng đi đúng đắn. Vấn đề này có vẻ như nó phải có một giải pháp thanh lịch đơn giản &.

Trả lời

13

Có, bạn nên viết người trợ giúp. Handlebars không hỗ trợ sử dụng logic trong các mẫu (đó là một thực hành tốt vì nó buộc bạn phải áp dụng sự tách biệt của mô hình quan tâm).

Mẫu helper trông như thế này:

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

Sau đó, bạn có thể gọi helper như thế này từ mẫu của bạn:

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

Bạn có thể đọc thêm về những người giúp đỡ trong Handlebars.js docs.

Các vấn đề liên quan