javascript - Vue.js 2:观察但不关注初始数据获取
问题描述
我是 Vueniverse 的新手(使用 Vue.js 2),我在watch
. 在 上mounted
,我调用一个 API 并将单选按钮设置为我从 API 获得的值,所以基本上我有两个单选按钮的值1
和0
(真/假)。
我认为观察者工作正常,因为它会在值改变时触发。但是,我不希望它在初始更改时触发 - 那是我第一次从后端设置值的时候。
我尝试过使用不同的生命周期钩子,例如beforeCreated
,created
等等,它总是会触发。
可能这很容易做到,但我不知道如何在互联网上找到信息(可能使用错误的关键字)。
编码:
import axios from "axios";
export default {
name: 'Settings',
data: () => ({
/* set motionSensor to null initially */
motionSensor: null
}),
mounted() {
/* get the initial value from the backend, however this triggers the watcher */
axios
.get('http://localhost:8000/status.json')
.then(response => {
response.data['motionsensor'] ? this.motionSensor = "1" : this.motionSensor = "0";
})
},
watch: {
motionSensor: function(val) {
alert('Motion sensor value is now: ' + val)
}
}
}
解决方案
尝试利用作为 watch handler 的第二个参数的旧值:
watch: {
motionSensor: function(val, oldVal) {
if (oldVal !== null) {
alert('Motion sensor value is now: ' + val)
}
}
}
推荐阅读
- python - 来自 CSV 文件的新手 Matplotlib 和 Pandas 绘图
- html - iframe 没有出现在 IOS 上
- javascript - 设置 cookie 并在 express、node.js 中使用 router.post 获取 json 响应时出错
- parsing - 基于缩进解析类似 ML 的语法,所有内容都被视为指令/表达式
- java - 是否可以在 JDK 11 上使用 jlink 来创建包含已删除的 Java SE EE 模块的运行时?
- coq - Coq 中单例类型单元的归纳原理是如何工作的?
- javascript - 单击时如何使用js隐藏可折叠元素
- c# - Azure 函数当时只有最大并发
- shiny - 我正在使用印地语 udpipe 模型并在 Shiny apl 中创建带有一些文本的 wordcloud。wordcloud 没有向我显示单词。
- vue.js - buefy 程序化模式从子级获取父级中的数据