处理Handlebars模板

时间:2015-10-27 08:23:59

标签: javascript ember.js handlebars.js

我使用Ember with Handlebars模板

如何在Handlebars中获得以下支持?

{{#if response.someCount> 0}}

我是否必须在Controller中添加一些映射属性才能实现此目的?

1 个答案:

答案 0 :(得分:0)

你需要帮助,例如:

Handlebars.registerHelper('compare', function (lvalue, rvalue, options) {
    if (arguments.length < 3)
      throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
    operator = options.hash.operator || "==";
    var operators = {
      '==': function (l, r) {
        return l == r;
      },
      '===': function (l, r) {
        return l === r;
      },
      '!=': function (l, r) {
        return l != r;
      },
      '<': function (l, r) {
        return l < r;
      },
      '>': function (l, r) {
        return l > r;
      },
      '<=': function (l, r) {
        return l <= r;
      },
      '>=': function (l, r) {
        return l >= r;
      },
      'typeof': function (l, r) {
        return typeof l == r;
      }
    }
    if (!operators[operator])
      throw new Error("Handlerbars Helper 'compare' doesn't know the operator " + operator);
    var result = operators[operator](lvalue, rvalue);
    if (result) {
      return options.fn(this);
    } else {
      return options.inverse(this);
    }
  });

然后在你的模板中:

{{#compare response.someCount 0 operator = ">"}}
// Some code...
{{/compare}}

很抱歉我不记得我在哪里编写了这个代码,但它在一个项目中运行了一年多的完美。