我不知道如何正确地提出这个问题,所以首先对不好的标题感到抱歉。
基本上,为了解释这个问题,我使用了使用vueJS构建的Web应用程序的上下文。
在这个应用程序中,我有一个简单的表,使用来自服务器的数据进行渲染,基本上我得到一个对象数组,每个对象都有一些属性,属性的范围并不重要。
现在我想在表中显示一些数据,如果某些属性不是来自服务器,我想隐藏表上的属性,但保留表的结构,缺少属性应该在表上有一个空白区域。
我是这样做的:
<div :style="{'visibility': computedValue}"></div>
这个计算值基本上是一个计算属性,它返回隐藏的&#39;或者&#39;显示&#39;对于能见度属性。
但这带来了一些问题;在计算属性上,我基于属性对象返回数据,例如:
company.createdAt
可以是未定义的,如果我使用:style
的可见性,我仍会遇到错误。
我来自v-if
和v-show
有点不同的角度环境,我知道v-if从DOM中取出元素并且v-show保留它,但是如果vue if我使用v-show执行上面的示例它仍然可以作为v-if,因为渲染数据的工作方式就像数据从DOM中删除一样。
我只是想要像它一样的空白区域。
对此有何帮助或解释?
答案 0 :(得分:1)
你试图隐藏元素但保留空间,对吧? vue-visible是一个简单的npm包,我最近用它来做这件事;好处是当你包含它时,你可以非常容易地和语义地使用它:v-visible="value"
,就像v-show或v-if一样,value
是真/假。
答案 1 :(得分:0)
您可以使用vue指令添加自己的v-visible
。简单添加以下内容:
Vue.directive('visible', (el, bind) => {
el.style.visibility=(!!bind.value) ? 'visible' : 'hidden';});
然后像使用v-show