我有一个静态主题,其中包含一些用于自定义jquery插件的json属性,比如
data-plugin-options='{"directionNav":false, "animation":"slide", "slideshow": false, "maxVisibleItems": 6}'
diazo编译器抱怨这个就像
Invalid expression [0:0]
compilation error, element 'div' [400:0]
Attribute 'data-plugin-options': Failed to compile the expression ''directionNav':false, 'animation':'slide', 'slideshow': false, 'maxVisibleItems': 6' in the AVT. [0:0]
Invalid expression [0:0]
compilation error, element 'div' [445:0]
Attribute 'data-plugin-options': Failed to compile the expression ''directionNav':false, 'animation':'slide'' in the AVT. [0:0]
Invalid expression [0:0]
compilation error, element 'div' [512:0]
Attribute 'data-plugin-options': Failed to compile the expression ''controlNav':false, 'slideshow': false, 'animationLoop': true, 'animation':'slide'' in the AVT. [0:0]
并打破渲染。
有没有办法让这项工作(除了将conf移到js之外)?
答案 0 :(得分:1)
似乎唯一的解决方案 - 实际上是有意义的 - 是将参数拆分为多个data
属性。像:
data-plugin-directionNav="false"
data-plugin-animation="slide"
data-plugin-slideshow="false"
data-plugin-maxVisibleItems="6"
答案 1 :(得分:0)
这些是TALES表达式。尝试以'string:'开头。你需要逃避'$'和';'如果你使用它们。
检查PyPI上的plone.app.theming页面;搜索“右侧是TALES表达式”的文档部分。
答案 2 :(得分:0)
必须对大括号进行转义,即{{
和}}
否则xslt引擎将尝试在AVT中评估/编译expressin。
此外,属性值必须用双引号"
... "
括起来,dict值用单引号'
... '
括起来,如下所示:
attributename="{{xyz:'abc'}}"
这将转变为
attributename="{xyz:'abc'}"
请记住:当你加载没有diazo的html模板时(即直接来自你的文件系统),你一定不能逃避大括号。否则你的插件最终不会将其视为json-string。