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

rap*_*sli 2 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);
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我有

{{ item.opendays | asyncFilter }}
Run Code Online (Sandbox Code Playgroud)

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

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

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

这是我用于渲染的代码:

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

Nic*_*rdu 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);
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*der 5

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

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

也就是说,env.render()而不是nunjucks.render().