有这样一个对象,它从中获取 vue 数据进行渲染。有必要在其中存储代码片段(条件)的字符串表示形式。我知道这一切都与风险有关,但这是必要的。在某些时候,需要检查这些条件,如何做到这一点?eval 的默认上下文是窗口,我怎样才能将 obj.vars 中的内容滑入其中?
var obj = {
vars : {
a: 5,
b: 6,
c: false
},
/*еще много всего*/
blocks: [
{
condition: "a<b",
text: "foo"
},
{
condition: "!c && a>3",
text: "bar"
}
]
};
var app = new Vue({
el: "#app",
data: {
blocks: obj.blocks,
vars: obj.vars
},
methods: {
check: function(cond) {
if (cond=="") return true; /*своя логика тоже должна быть*/
let result = true;
/*result = eval(cond) ?? */
return result;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<p v-for="block in blocks" v-if="check(block.condition)">{{block.text}}</p>
</div>
如果有帮助,您可以以不同的形式编写 obj.vars,例如:
[{key:"a", value:5},{key:"b", value:6...]
或作为关联数组。
1 个回答