【发布时间】:2014-08-03 04:06:13
【问题描述】:
在构建我的第一个 Meteor 项目时,我注意到大量的代码重复,我想知道是否有办法将其干掉。
我的数据库模型有商店,每个商店都有许多产品,以及一个包含当前库存数量的字段。
var store_id = Store.insert({name: 'Store 1', max_items: 50});
var p1 = Product.insert({name: 'General', store_id: store_id, item_count: 20});
var p2 = Product.insert({name: 'Special', store_id: store_id, item_count: 10});
我有一个模板来显示一家商店,以及它拥有多少产品和商品的统计数据。
<template name="store">
<div class="store">
<b>{{name}}</b>
<p>Current items: {{current_items}}</p>
<p>Maximum # of items allowed in inventory: {{max_items}}</p>
<p>% Full: {{percent_full}}%</p>
</div>
</template>
计算当前商品的数量似乎相当简单,我提取所有商品,对商品计数求和(使用 d3),然后返回结果。
Template.store.current_items = function () {
var store_id = this._id;
var items = Product.find({store_id: store_id}).fetch();
if ( items.length > 0 ) {
var item_cnt = d3.sum(_.pluck(items, 'item_count'));
return item_cnt;
}
else {
return 'N/A';
}
};
要计算允许项目总数和当前项目的百分比,似乎我必须重复所有内容。有没有更好的方法来做到这一点?
Template.store.percent_full = function () {
var store_id = this._id;
var items = Product.find({store_id: store_id}).fetch();
if ( items.length > 0 ) {
var item_cnt = d3.sum(_.pluck(items, 'item_count'));
return item_cnt / max_items * 100;
}
else {
return 'N/A';
}
};
【问题讨论】:
-
我不知道流星,用
{{current_items / max_items * 100}}代替{{percent_full}}可以解决问题吗?