浏览器中Nunjucks的自定义过滤器

时间:2014-01-11 13:09:17

标签: javascript nunjucks

所以我在这里添加了简单的脚本标记这个脚本。

var env = new nunjucks.Environment();

// async filters must be known at compile-time
env.addFilter('asyncFilter', function(val, cb) {
  // do something
  return "test"
}, true);

在我的模板中,我有

{{ item.opendays | asyncFilter }}

我在Chrome控制台中收到的错误:

Uncaught Template render error: (node/yummy/www/js/templates/restaurant.overview.html)
  Error: filter not found: asyncFilter 

可能是非常简单的事情,但我无法让它发挥作用。

以下是我用于渲染的代码:

 items = nunjucks.render(Config.rootPath + 'js/templates/restaurant.overview.html', {items: data});

2 个答案:

答案 0 :(得分:13)

如果您使用configure,则会返回您应添加过滤器的环境:

var env = nunjucks.configure('views');

// async filters must be known at compile-time
env.addFilter('asyncFilter', function(val, cb) {
  // do something
  return "test"
}, true);

然后您可以继续使用nunjucks.render()

答案 1 :(得分:4)

您没有使用刚创建和设置的环境。

items = env.render(Config.rootPath + 'js/templates/restaurant.overview.html', {
  items: data
});

env.render()而不是nunjucks.render()