我正在尝试在 vue 模板中使用 v-if 指令中的函数
<template>
<ul class="list-group">
<li class="list-group-item list-group-item-info">
<div class="row">
<div v-for="col in colss" class="" :class="bootstrapClass">{{col | capitalize}}</div>
</div>
</li>
<li v-for="item in datas[collectionsindatas['reference']]" class="list-group-item">
<div class="row">
<div v-for="property in columns.slice(0,(columns.length))" class="" :class="bootstrapClass">{{ item[property] }}</div>
<div v-if="compareCollections(item[comparecol],datas[collectionsindatas['compare'][comparecol]])" class="" :class="bootstrapClass">
OK
</div>
<div v-else class="" :class="bootstrapClass">!!NOK!!</div>
</div>
</li>
</ul>
</template>
我的方法是这样的:
methods:{
compareCollections:function(reference,compare){
if(compare!='undefined' && compare!=''){
if(compare===reference){
return true;
}
return false;
}
return false;
},
}
它失败并显示此消息:[Vue 警告]:属性或方法未在实例上定义,但在渲染期间被引用
使用一种方法而不是在 v-if 指令中写很多丑陋的东西会更好,比如
v-if="datas[collectionsindatas['compare'][comparecol]]!='undefined'&&(item[comparecol]===datas[collectionsindatas['compare'][comparecol]])"
这样做的正确方法是什么?
谢谢你的帮助
原文由 Eloise85 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,它可以改进,但这是我解决这个问题的方法:
我的列表组件通过 props 接收可用权限的参考列表,并接收与角色权限的比较列表,因此当比较返回 true 时,它将显示一个切换开关,该开关设置在 ON 位置,如果它为 false,则设置为 OFF。所以这里是 app.js :
这是刀片模板中的组件调用:
这是vue文件代码: