gpt4 book ai didi

vue.js 确定空对象的正确方法

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:15 24 4
gpt4 key购买 nike

经典场景:我想显示一个列表,但是当它为空时我想显示“无数据”。

事实上,做一些我希望很简单的事情有点复杂,这让我觉得我可能做错了。

这是我目前的解决方案。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/vue/1.0.16/vue.js"></script>

<div id="element">
<div v-if="empty">No item in inventory</div>
<div v-for="(index, item) in inventory">
{{item.key}}<button onclick="remove('{{index}}')">remove</button>
</div>
</div>

<script type="text/javascript">
"use strict";
var vm;
$(function() {
vm = new Vue({
el: '#element',
data: {
inventory: {"id1" : {"key" : "val1"}, "id2" : {"key" : "val2"}},
empty: false
},
watch: {
inventory: function() {
vm.empty = $.isEmptyObject(vm.inventory);
}
}
});
});

function remove(key) {
Vue.delete(vm.inventory, key);
}
</script>

还有比这更好的解决方案吗?

最佳答案

你可以在v-if中只使用inventory的长度,如下所示:

<div id="element">
<div v-if="!inventory.length">No item in inventory</div>
<div v-for="(index, item) in inventory">
{{item.key}}
<button v-on:click="remove(index)">remove</button>
</div>
</div>

鉴于 inventory 变量是散列而不是数组,您可以使用以下任何方法找到它为空并在 v-if 中使用它:

ECMA 5+ :

Object.keys(inventory).length === 0

ECMA 5 之前的版本:

function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}

return JSON.stringify(obj) === JSON.stringify({});
}

因为您已经在使用 jquery ,你也可以这样做:

jQuery.isEmptyObject({}); // true

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/vue/1.0.16/vue.js"></script>

<div id="element">

<div v-if="isEmpty">No item in inventory</div>
<div v-for="(index, item) in inventory">
{{item.key}}<button @click="remove(index)">remove</button>
</div>
</div>

<script type="text/javascript">
"use strict";
var vm;
$(function() {
vm = new Vue({
el: '#element',
data: {
inventory: {"id1" : {"key" : "val1"}, "id2" : {"key" : "val2"}},
empty: false
},
methods: {
remove: function(index) {
Vue.delete(this.inventory, index);

}
},
computed: {
isEmpty: function () {
return jQuery.isEmptyObject(this.inventory)
}
}
});
});
</script>

关于vue.js 确定空对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41192314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com