热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vue中的数据更新问题解析

探讨在Vue框架中遇到的数据更新延迟或失败的问题,并提供解决方案。

作为一名 Vue 的新手,我在尝试实现一个简单的省份查询功能时遇到了一些问题。具体来说,当用户输入省份名称后,虽然能够正确地从服务器获取到数据,但页面上的数据显示却没有更新。下面是我当前的代码结构和遇到的具体问题。

HTML 结构如下:



请输入要查询的省份:


{{answer}}




为了简化 AJAX 请求的处理,这里使用了 jQuery。以下是相关的 Javascript 代码:

var watchExampleVM = new Vue({
el: '#watch-example',
data: {
question: '',
answer: '省份ID查询'
},
watch: {
question: function (newQuestion) {
this.answer = '正在查询..';
this.getAnswer();
}
},
methods: {
getAnswer: function () {
var tAnswer = this.answer;
console.log(tAnswer); // 在这里我检查了数据,数据看起来是正确的
var pName = this.question;
if (this.question !== "") {
$.ajax({
type: 'post',
url: 'http://192.168.1.1:8383/_API/_province/get',
data: null,
success: function (data) {
if (data.code === 'E0000') {
for (var i = 0; i var One= data.data[i];
if (one.name === pName) {
console.log(pName, tAnswer, tAnswer === watchExampleVM.answer); // 这里我打印了数据,显示为 true,但是为什么数据没有更新呢?
tAnswer = "省份ID:" + one.id;
return;
}
}
tAnswer = "未找到省份ID";
} else {
watchExampleVM.answer = data.message; // 直接赋值给 Vue 实例的属性可以成功更新
}
}
});
}
}
}
});

问题在于,即使在控制台中打印的结果显示 `tAnswer` 和 `watchExampleVM.answer` 是相等的,但在 AJAX 回调中修改 `tAnswer` 的值并不会导致页面上的 `{{answer}}` 更新。然而,如果直接修改 `watchExampleVM.answer` 的值,则可以正常更新显示。这让我非常困惑,希望有人能解释其中的原因并提供解决方案。

附上服务器返回的数据示例:

{
"code": "E0000",
"data": [
{ "id": "1", "name": "北京市", "icon": "beijing", "fid": "0", "definition": "1", "level": "1" },
{ "id": "22", "name": "天津市", "icon": "T", "fid": "0", "definition": "1", "level": "1" },
{ "id": "43", "name": "河北省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "227", "name": "山西省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "472", "name": "辽宁省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "587", "name": "吉林省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "657", "name": "黑龙江省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "801", "name": "上海市", "icon": "S", "fid": "0", "definition": "1", "level": "1" },
{ "id": "823", "name": "江苏省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "943", "name": "浙江省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "1045", "name": "安徽省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "1168", "name": "福建省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "1263", "name": "江西省", "icon": null, "fid": "0", "definition": "1", "level": "6" },
{ "id": "1374", "name": "山东省", "icon": null, "fid": "0", "definition": "1", "level": "6" }
]
}

推荐阅读
author-avatar
我户口名字被占用了_402
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有