JS - Meteor返回多种方法

时间:2015-09-26 09:40:19

标签: javascript meteor

我正试图找到一种方法来回复:

 list: function() {
      return binary.find(), o8.find(), dec.find(), h16.find();
     },

作为此模板的一部分

<template name="convert">
 <div class="container-fluid">
    <button id="buttonchange" class="btn btn-info 
    {{buttonchangeclass}}">Convert Decimal</button>
    {{#each list}}
    <div class="row, rowbox">
      <h5 class="base">Number: <span class="bd">{{decimal}}</span></h5>
      <h5 class="base">Binary: <span class="bd">{{base2}}</span></h5>
      <h5 class="base">Octal: <span class="bd">{{octal}}</span></h5>
      <h5 class="base">Hex: <span class="bd">{{hex}}</span></h5>
      <button id="buttonrem2" class="btn btn-warning {{buttonrem2class}}">Clear</button>
    </div>
    {{/each}}
  </div>
</template>

我对这两个系统都很陌生。所以任何想法都会很棒。

1 个答案:

答案 0 :(得分:0)

因为 clippy 可能会说看起来你正试图建立一个角色表!

让我们以两种不同的方式做到这一点,以便我们可以说明Meteor,javascript和spacebars模板的不同方面。

对象数组

Template.convert.helpers({
  list: function(){
    return [
      { base2: '0000', octal: '00' , decimal: 0 , hex: '00'},
      { base2: '0001', octal: '01' , decimal: 1 , hex: '01'},
      { base2: '1000', octal: '10' , decimal: 8 , hex: '08'},
      { base2: '1111', octal: '17' , decimal: 15 , hex: '0F'}
    ];
  })
});

在这种情况下,每个都有一个对象,其中包含您希望在模板中显示的所有元素。虽然 list 帮助程序定义了所有数据,但在正常使用中,您有一个集合数据,这些数据在MongoDB中持久存在并且您使用 Collection.find()返回游标

用于格式化的辅助函数

由于您只是在进行格式转换,因此存储每个数字的每种格式都有点过分。让我们使用帮助器将数字从十进制转换为其他基数:

Template.convert.helpers({
  list: function(){
    return [0,1,8,15]; // same data as last time, but decimal only
  },
  base2: function(){
    return this.toString(2);
  },
  octal: function(){
    return this.toString(8);
  },
  hex: function(){
    return this.toString(16);
  }
});

现在,您可以轻松处理可能从列表帮助程序返回的任何数字。

但这仍然有点冗长。如果你想在像7或12号这样的疯狂基地中显示数字怎么办?您可以编写一个辅助函数,将基数作为参数:

Template.convert.helpers({
  rebase: function(base){
    return this.toString(base);
  })
});

然后在模板中使用它,{{rebase 8}}用于八进制等...