vue.js - Vuejs - 观察者观察不够深入
问题描述
出于某种原因,Vuejs 并没有密切关注变化。假设下面是我正在观看的数据。
input_collection: [
{
type: 'foo',
value: 'foo'
},{
type: 'bar',
value: 'bar'
},{
type: 'baz',
value: 'baz'
}
]
基本上它是一组对象。当我更改除最后一项之外的任何内容时,它会触发手表完成其工作。但是当最后一项更新时,它不会。
我更改内容的方式input_collection
是使用v-model
并直接更改代码中的值。我也怀疑直接更改方法是罪魁祸首,因为我只在最后一项中使用了它并且输入具有只读属性,但是由于我直接为项目的内容分配了一个新值,所以不应该成为问题。
//via v-model
<input :type="type" v-model="title"/>
//via directly changing
<input type="type" :value="value" readonly>
//js
this.input.title = new_value;
this.value = new_value;
我尝试通过 Vue Devtools Extension 手动更改最后一项内容中的最后一个内容,但它仍然不起作用。
解决方案
我已经想通了。事实证明,它正在readonly
导致我的问题。我刚刚通过以下方式创建了一个解决方法:
//markup
<input type="text" v-model="input.value" @keypress.prevent>
//js
this.input.value = new_value
现在,观察者可以正常工作。
推荐阅读
- spring-cloud-sleuth - 在 Zipkin 中找不到可导出的 Zipkin/Brave/Spring-Cloud-Sleuth Span
- angular - Angular 9 到 10 升级 - Typescript 编译警告:*.ngtypecheck.ts
- r - 使用非“选择”(土地覆盖)数据实施 mlogit
- amazon-web-services - 一个 lambda 的 InvalidChiperException,但不是另一个
- atom-editor - 为什么我的部分语法在 Atom 中仍然是灰色的(使用 One Dark 主题)?
- regex - 从较长的字符串中提取字符串 | 红宝石
- javascript - 你如何在 JavaScript 中播放音频文件?
- c# - 当项目部署在 IIS 8.5 上时,无法使用 EntityFramework 6 创建数据库
- javascript - 使用正则表达式查找多行值并替换
- android-studio - 没有配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL