javascript - 无法访问对象内的 JSON 数据。财产
问题描述
我目前正在从事 LitElement 项目。我使用此代码将 JSON 数据添加到 category.items 属性中,
fetchItems(category) {
if (!category || category.items) {
return;
}
this.getResource({
url: 'data/' + category.name + '.json',
onLoad(e) {
category.items= JSON.parse(e.target.responseText);
},
});
}
getResource(rq) {
let xhr = new XMLHttpRequest();
xhr.addEventListener('load', rq.onLoad.bind(this));
xhr.open('GET', rq.url);
xhr.send();
}
}
然后我尝试在另一个组件中获取这些数据,但我无法访问 Items 属性。
我用来获取数据的代码,
handleCategoriesyChanged(e) {
this.categories = e.detail.categories.value;
if(this.location!=undefined){
for(let i=0; i<this.categories.length ;i++){
if(this.location.params[0]==this.categories[i].name){
this.item = this.categories[i];
}
}
console.log(this.item);
console.log(this.item.items);
console.log(JSON.stringify(this.item, null ,2));
console.log(this.item.items);
}
当我调用该对象时,它显示了 items 属性,但我无法访问它。所以,我尝试了 JSON.stringify 方法,但当时没有显示 items 属性。我在这个网站上遇到了类似的问题,但我无法确定出了什么问题以及为什么会在这种情况下发生这种情况。
解决方案
看起来你正在改变你的并在你的日志之后的某个地方this.item
添加字段。这就是JSON.stringifyitems
中没有键的原因。items
console.log(this.item);
this.items
当您通过引用更改对象时,记录对和输出的引用将被更改。
尝试执行此代码并展开第一个 console.log 输出以查看我在说什么。
var object = {};
console.log(object);
console.log(object.a);
object.a = 'first key';
console.log(object);
推荐阅读
- html - 相对于其兄弟元素绝对定位一个元素
- reporting-services - 我可以将 IsNothing 与 Lookup 功能一起使用吗
- string - 为多个测试用例输入字符串时,为什么第一个测试用例输入空字符以及如何避免?
- ruby - 如果你把@x = 5 放在类定义之后呢?
- scala - scala特征中`val`的递归调用?
- ruby-on-rails - rails 5 基于模型属性的动态路由重定向
- jenkins - Jenkins Active Directory 阻止了我自己
- angular - 找不到角度模块:错误:无法解析“./app/app.module.ngfactory”
- sql - 如何在没有 WHERE 子句的情况下编写此 T_SQL 连接?
- neo4j - Neo4j 密码返回具有特定格式的路径