在swig模板中访问连字符json变量

Accessing hyphenated json variables within swig templates

本文关键字:连字符 json 变量 访问 swig      更新时间:2023-09-26

使用swig模板和预先存在的json数据(不幸的是无法更改),当变量使用连字符时,我在呈现数据时遇到麻烦。发现这种情况可以通过使用括号符号来处理,正如文档中明确指出的那样,但由于某种原因,我无法达到预期的结果。我知道还有其他模板语言,但我更喜欢使用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 %}

索引。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;
    })();
});

文档:http://paularmstrong.github.io/swig/docs/变量

而不是传递index.json的内容作为整个locals对象,只需将您的数据放在更深一层的键上,以便您可以使用括号符号…

swig.render('index.swig', { locals: { data: indexjson }});
{{ data['target-div'] }}