检查存储 vuex 的 json 数组是不是为空

Posted

技术标签:

【中文标题】检查存储 vuex 的 json 数组是不是为空【英文标题】:Check if json array is empty at store vuex检查存储 vuex 的 json 数组是否为空 【发布时间】:2018-01-09 14:11:33 【问题描述】:

如果我的对象数组有一些数据,我想显示一个按钮,所以在我的商店(vuex)中我定义了一个这样的数组:

state: 
    document: []
,

我从其他组件将数据附加到这个数组,并且我已经检查过数据是否正确附加,这里没问题。

所以我想在有数据时显示按钮:

<div class="row margin-above">
    <div class="panel panel-primary" v-for="section in this.$store.getters.getDocument">
        <div class="panel-body quote" >
            <p>section.key</p>
        </div>
    </div>
    <div v-if="this.$store.getters.getDocument != '[]'">
        <button class="btn btn-success btn-block">Create Document</button>
    </div>
</div>

有按钮,如果条件匹配,我想用按钮隐藏整个 div,但它不起作用按钮总是在那里,有什么帮助吗?

【问题讨论】:

为什么在this.$store.getters.getDocument != '[]' 中使用单引号? document 不是数组吗? 我也试过了,结果一样 如果你这样做v-if="document.length &gt; 0" 会怎样? @FilipeCosta 是的,如果你的document 是一个数组,你不应该使用“!=”,参见:***.com/questions/40313263/why-is-in-javascript 有道理,我在睡觉:) 【参考方案1】:

检查它的长度属性。

<div v-if="this.$store.getters.getDocument.length != 0">
    <button class="btn btn-success btn-block">Create Document</button>
</div>

或者在没有元素的时候将vuex变量赋值给null。比这应该有效。

<div v-if="this.$store.getters.getDocument">
    <button class="btn btn-success btn-block">Create Document</button>
</div>

【讨论】:

工作,不知道我尝试过类似的东西,谢谢你的朋友:D【参考方案2】:

您是否在您的商店中定义了 getter“getDocument”,如果是这样,请在您的组件中添加一个计算属性,它比直接在模板中引用商店 getter 更清洁和更可重用:

computed : 
   document: function()  
       return this.$store.getters.getDocument; 
   

在模板中:

<div v-if="document.length">
    <button class="btn btn-success btn-block">Create Document</button>
</div>

【讨论】:

以上是关于检查存储 vuex 的 json 数组是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

确保在渲染组件之前加载 Vuex 状态

检查 JSON 响应数据是不是为空 [重复]

Vuex 4,组件中的状态为空

如何快速检查 JSON 是不是为空?

如何检查 NodeJS 中的 JSON 是不是为空?

Laravel/PHP - 如何检查 JSON 是不是为空? [复制]