首页 > 解决方案 > obj.hasOwnProperty 即使在属性创建后也总是返回 false

问题描述

在我的 Vue 应用程序中,我有一系列股票:

stocks : [
    {'name' : 'Tesla', 'price' : 800},
    {'name' : 'Microsoft', 'price' : 300},
]

我还有一个看起来像这样的条件元素:

<template v-for="stock in stocks">
    <div>{{ stock.name }}</div>
    <div v-if="stock.hasOwnProperty('test')">test</div>
</template>

我有一种方法可以设置股票的测试属性。例如:

this.stocks[0].test = true;

如果在此声明下,console.log(this.stocks)我看到了test第一个属性stock。但是,在模板中,当 astock具有此属性时应该显示的元素仍然没有显示。为什么会这样?如何根据库存元素是否具有test属性来动态显示/隐藏它们?

标签: javascriptvue.js

解决方案


Vue(无论如何,2)无法检测到属性添加或删除

您应该在test内声明该属性stocks,以便它从一开始就存在:

stocks : [
    {'name' : 'Tesla', 'price' : 800, test: false },
    {'name' : 'Microsoft', 'price' : 300, test: false },
]

然后它将是反应性的,您可以根据test.


推荐阅读