如何检查变量是否是 if 块中的对象或字符串?似乎无法调用{% if ... %}
块内的函数。而另一种{{ if() }}
语法似乎只适用于内联条件。
我现在解决它以测试当变量是对象时应该存在的一些对象属性,但应该有更好的解决方案。像isObject
orisString
函数
如何检查变量是否是 if 块中的对象或字符串?似乎无法调用{% if ... %}
块内的函数。而另一种{{ if() }}
语法似乎只适用于内联条件。
我现在解决它以测试当变量是对象时应该存在的一些对象属性,但应该有更好的解决方案。像isObject
orisString
函数
您可以使用自定义过滤器:
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>
自定义过滤器,或者您可以...
if (string(foo) == foo) { // string }
else { // object }