0

使用 swig 模板和预先存在的 json 数据(遗憾的是无法更改)当变量被连字符时,我无法呈现数据。发现可以通过使用括号表示法来处理这种情况,如docs 中明确说明的那样,但由于某种原因,我无法达到预期的结果。我知道其他模板语言,但我热衷于使用 swig 来提高性能和其他好处。

非常感谢任何见解。

测试用例文件:

布局.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/#variables

4

1 回答 1

1

无需将 的内容index.json作为整个locals对象传递,只需将数据放在更深一层的关键上,以便您可以使用括号表示法......

swig.render('index.swig', { locals: { data: indexjson }});

{{ data['target-div'] }}
于 2014-05-10T18:50:30.503 回答