使用swig模板和预先存在的json数据(遗憾的是,这些数据无法更改)我在变量连字时渲染数据时遇到问题。发现可以使用括号表示法来处理这种情况,如the docs中所述,但出于某种原因,我无法达到预期的结果。我知道其他模板语言,但我热衷于使用swig来提高性能和其他好处。
非常感谢任何见解。
测试用例文件:
layout.swigtmpl
<body>
{% block content %}{% endblock %}
</body>
index.swig
{% extends 'layout.swigtmpl' %}
{% block content %}
<div>
<p>{{ targetdiv }}</p> // Works
<p>{{ ['target-div'] }}</p> // Not rendering
<p>{{ json['target-div'] }}</p> // Not rendering when assigned to an obj
</div>
{% endblock %}
index.json
{
"targetdiv": "lorem ipsum",
"target-div": "lorem ipsum"
}
在布局文件中,将json数据分配给对象进行测试,但没有爱。
$(function() {
var json = (function () {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': 'index.json',
'dataType': "json",
'success': function(data) {
json = data;
}
});
console.log("json = " + json['target-div']); // Works fine in log
return json;
})();
});
答案 0 :(得分:1)
不要将index.json
的内容作为整个locals
对象传递,只需将数据放在一个更深的关键位置,以便您可以使用括号表示法...
swig.render('index.swig', { locals: { data: indexjson }});
{{ data['target-div'] }}