3

如何检查变量是否是 if 块中的对象或字符串?似乎无法调用{% if ... %}块内的函数。而另一种{{ if() }}语法似乎只适用于内联条件。

我现在解决它以测试当变量是对象时应该存在的一些对象属性,但应该有更好的解决方案。像isObjectorisString函数

4

2 回答 2

7

您可以使用自定义过滤器

var env = new nunjucks.Environment();

env.addFilter('is_string', function(obj) {
  return typeof obj == 'string';
});

这是模板的样子:

{% if item|is_string %}yes{% endif %}

var env = new nunjucks.Environment();

env.addFilter('is_string', function(obj) {
  return typeof obj == 'string';
});

var res = env.renderString("{% if item|is_string %}yes{% endif %}", { item: 'test' });

document.body.innerHTML = res;
<script src="https://mozilla.github.io/nunjucks/files/nunjucks.js"></script>

于 2015-05-28T05:59:42.533 回答
2

自定义过滤器,或者您可以...

if (string(foo) == foo) { // string }
else { // object }
于 2015-05-28T04:19:09.430 回答