vue2中this.$vm.$set为undefined
时间: 2023-08-13 08:11:03 浏览: 130
在 Vue 2 中,`this.$vm.$set` 是 undefined 是因为 `$set` 这个方法并不存在于 Vue 实例中。`$set` 方法是用于在 Vue 中以响应式地方式设置对象属性的。在 Vue 2 中,可以使用 `Vue.set` 方法来实现同样的效果。
你可以将代码中的 `this.$vm.$set` 替换为 `Vue.set`,并传递对象、要设置的属性和对应的值作为参数。例如:
```javascript
Vue.set(this.$vm, 'propertyName', propertyValue);
```
这样就可以在 Vue 2 中实现类似于 `this.$vm.$set` 的功能了。
相关问题
vue.runtime.esm.js:1888 TypeError: Cannot read properties of undefined (reading 'data') at VueComponent.setOptions (VM210603 bottomOne.vue:71:24) at VueComponent.chartsInit (VM210603 bottomOne.vue:59:12) at VueComponent.eval (VM210603 bottomOne.vue:44:13) at Array.eval (vue.runtime.esm.js:1980:1) at flushCallbacks (vue.runtime.esm.js:1906:1)
这个错误可能是因为在 Vue 组件中,你访问了一个未定义的数据或方法。
根据错误提示,问题出现在 `bottomOne.vue` 文件的第 71 行,该行代码中访问了一个未定义的属性 `data`。你需要检查该属性是否在组件的 `data` 对象中定义了,或者是否在其他地方被正确初始化了。
此外,错误提示中还提到了 `setOptions` 方法,你需要检查这个方法的实现是否正确,以及传入该方法的参数是否正确。
最后,你还需要检查代码中是否存在其他未定义的变量或方法,这些变量或方法可能导致类似的错误。如果有,需要进行相应的修复。
VM8007:1 Uncaught SyntaxError: "undefined" is not valid JSON at JSON.parse (<anonymous>) at eval (settingOperate.vue:426:1) eval @ settingOperate.vue:426 setTimeout(异步) _callee5$ @ settingOperate.vue:425 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then(异步) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 performinfuns @ settingOperate.vue:427 _callee4$ @ settingOperate.vue:389 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 changecmd @ settingOperate.vue:390 _callee3$ @ settingOperate.vue:379 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then(异步) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 performinfun @ settingOperate.vue:379 _callee$ @ settingOperate.vue:296 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then(异步) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 setForm @ settingOperate.vue:322 updateOperate @ add.vue:549 click @ add.vue:686 invokeWithErrorHandling @ vue.runtime.esm.js:1854 invoker @ vue.runtime.esm.js:2179 invokeWithErrorHandling @ vue.runtime.esm.js:1854 Vue.$emit @ vue.runtime.esm.js:3888 handleClick @ element-ui.common.js:9417 invokeWithErrorHandling @ vue.runtime.esm.js:1854 invoker @ vue.runtime.esm.js:2179 original._wrapper @ vue.runtime.esm.js:6917
这个错误的意思是,JSON.parse() 函数中传入的参数是 undefined,而 undefined 不是有效的 JSON。这可能是因为你在使用 JSON.parse() 之前没有检查传入的参数是否存在。可以添加一个检查来解决这个问题,例如:
```
if (typeof myData !== 'undefined') {
var parsedData = JSON.parse(myData);
}
```
这个代码片段首先检查 myData 是否已定义,然后再尝试解析 JSON。如果 myData 未定义,则不会调用 JSON.parse(),因此不会出现 "undefined" is not valid JSON 的错误。
阅读全文