由于某些原因,VueJS中的字符串插值无法按我期望的那样工作。
这是我的HTML:
<ul id='books'>
<li v-for="row in results.rows">
<span v-html="row.name"></span> --
{{ row.name }}
</li>
</ul>
...和我的javascript文件...
state.elements.bookList = new Vue({
el: '#books',
data:{
db:state.db,
results:{
offset:0,
total_rows:0,
rows:[
{name:'bob'},
{name:'joe'},
]
}
}
});
渲染后,我在列表中得到了预期的两个项目;但是插值不起作用。作为测试,我添加了v-html
绑定,它确实呈现了预期的名称。
该名称未呈现,这是我做错了什么?
答案 0 :(得分:1)
这是模板引擎jekyll
和vuejs
冲突的问题。在这两种情况下,数据标签都用大括号括起来。
在这种情况下,jekyll将标签解析为一个空字符串,随后vue提示并没有找到任何内容。
其他可能(容易)冲突的引擎:
要解决此问题,其中一个模板引擎将需要更改其定界符:
state.elements.bookList = new Vue({
el: '#books',
delimiters: ['[[', ']]'],
data:{
db:state.db,
results:{
offset:0,
total_rows:0,
rows:[
{name:'bob'},
{name:'joe'},
]
}
}
});
<ul id='books'>
<li v-for="row in results.rows">
<span v-html="row.name"></span> --
[[ row.name ]]
</li>
</ul>
答案 1 :(得分:1)
弯括号冲突。
如果您希望jekyll不留Vue的括号,可以使用raw
标签:
{% raw %}{{ row.name }}{% endraw %}