【发布时间】:2021-12-13 03:03:54
【问题描述】:
在下面的代码中使用removeData 函数时收到以下错误。
Alpine 表达式错误:无法读取未定义的属性(读取“名称”)
表达式:“数据[id].name”
<input x-model="data[id].name" type="text" name="name"></input>
Alpine 表达式错误:无法读取未定义的属性(正在读取“文本”)
表达式:“数据[id].text”
<input x-model="data[id].text" type="text" name="text"></input>
一切似乎都正常工作,但在控制台中生成了错误消息。有没有办法阻止这种情况发生?
function handler() {
return {
data: {},
getData() {
console.log(this.data);
},
addData() {
x = Object.keys(this.data);
x = x.map(function(x) {
return parseInt(x, 10);
}).sort();
n = x[x.length - 1];
if (isNaN(n)) {
n = 0;
};
this.data[n + 1] = {
'name': '',
'text': ''
}
},
removeData(id) {
delete this.data[id];
},
}
}
<script src="//unpkg.com/alpinejs" defer></script>
<div x-data="handler()">
<button type="button" @click="getData()">ShowData</button>
<button type="button" @click="addData()">AddData</button>
<template x-for="[id, value] in Object.entries(data)" :key="id">
<div :id="id">
<input x-model="id" type="number">
<input x-model="data[id].name" type="text" name="name">
<input x-model="data[id].text" type="text" name="text">
<button type="button" @click="removeData(id)">Remove</button>
</div>
</template>
</div>
【问题讨论】:
-
下一次,请完整包含错误消息并注意它们引用的脚本的哪一部分
-
@Phil 感谢您添加它。下次我一定会这样做。
标签: javascript alpine.js