vue显示和隐藏对象属性设计

时间:2018-05-18 19:30:44

标签: javascript vue.js

我不知道如何正确地提出这个问题,所以首先对不好的标题感到抱歉。

基本上,为了解释这个问题,我使用了使用vueJS构建的Web应用程序的上下文。

在这个应用程序中,我有一个简单的表,使用来自服务器的数据进行渲染,基本上我得到一个对象数组,每个对象都有一些属性,属性的范围并不重要。

现在我想在表中显示一些数据,如果某些属性不是来自服务器,我想隐藏表上的属性,但保留表的结构,缺少属性应该在表上有一个空白区域。

我是这样做的:

<div :style="{'visibility': computedValue}"></div>

这个计算值基本上是一个计算属性,它返回隐藏的&#39;或者&#39;显示&#39;对于能见度属性。

但这带来了一些问题;在计算属性上,我基于属性对象返回数据,例如:

company.createdAt可以是未定义的,如果我使用:style的可见性,我仍会遇到错误。

我来自v-ifv-show有点不同的角度环境,我知道v-if从DOM中取出元素并且v-show保留它,但是如果vue if我使用v-show执行上面的示例它仍然可以作为v-if,因为渲染数据的工作方式就像数据从DOM中删除一样。

我只是想要像它一样的空白区域。

对此有何帮助或解释?

2 个答案:

答案 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

一样使用它