twosFn(item, ite) { let arr = [] arr.push(item, ite) console.log(arr) this.activeArr = arr },怎么讲item和ite转换成字符串
时间: 2024-02-10 17:06:41 浏览: 77
可以使用toString()方法将item和ite转换成字符串,代码如下:
```
twosFn(item, ite) {
let arr = [];
arr.push(item.toString(), ite.toString());
console.log(arr);
this.activeArr = arr;
}
```
这样,item和ite就会被转换成字符串类型并被添加到数组中。
相关问题
for (let item of list) { let addchildren=[] if(item.orgDepartment.length>0){ let org_id = item.orgDepartment.map(e=>e.org_id) addchildren = this.orgList.filter(e=>org_id.includes(e.value)) for(let ite of item.orgDepartment){ let adds={ children:[], text:ite.title, value:ite.id, opened: false, selected: false, disabled: false, loading: false, } addchildren.find(e =>e.value === ite.org_id)?.children.push(adds); } console.log(addchildren) } let add={ children:addchildren, text:item.title, value:item.id, opened: false, selected: false, disabled: false, loading: false, } data.find(e =>e.value === item.pid)?.children.push(add); }为什么addchildren叠加了
在这段代码中,变量 `addchildren` 在外层 `for` 循环开始时被初始化为 `[]`,然后在内层 `if` 条件成立时被赋值为 `this.orgList.filter(e=>org_id.includes(e.value))`,即 `this.orgList` 中 `value` 属性在 `org_id` 数组中出现的元素。接着在内层 `for` 循环中,对 `addchildren` 数组中的某些元素进行了修改,即将一个新的对象 `adds` 添加到了 `addchildren` 数组中的某些元素的 `children` 属性中。
因为在 JavaScript 中,对象是引用类型,所以当你修改了 `addchildren` 数组中某个元素的属性时,也就是在修改该元素指向的对象的属性,所以 `addchildren` 数组中的元素也跟着被修改了。而在下一次外层循环中,又会将 `addchildren` 赋值为一个新的数组,所以之前的修改就被覆盖了,看起来就像 `addchildren` 叠加了。
如果你想要避免这个问题,可以在内层循环结束后手动将 `addchildren` 重新赋值为 `[]`,或者使用另一个变量来保存计算结果,以免修改原始数组。
<el-table-column v-show="itemheader.name == '备注'" v-for="(ite, indd) in itemheader.children" :key="indd" :label="ite.name" min-width="110" align="center" show-overflow-tooltip > <template slot-scope="scope"> <div @click="clickbz()" v-if="ite.name == '监控备注' && !showInput" :style="{ color: scope.row[ind].color ? scope.row[ind].color : 'white', width: '100%', height: '30px', cursor: 'pointer', }" > {{ scope.row[ind].children[indd].value }} </div> <el-input v-if="showInput && ite.name == '监控备注'" size="mini" v-model="scope.row[ind].children[indd].value" @blur=" changeBz( scope.row[ind].children[indd].value, scope.row[1].resId ) " style="width: 90px" ></el-input> <div v-if="ite.name != '监控备注'" :style="{ color: scope.row[ind].color ? scope.row[ind].color : 'white', }" > {{ scope.row[ind].children[indd].value }} </div> </template> </el-table-column> vue 如何在点击 表格内输入框时 input框自动聚焦呢 以下是点击事件 clickbz() { clearInterval(this.timer); this.showInput = true; },
要实现在点击表格内的输入框时自动聚焦,可以使用Vue的`ref`属性和`$refs`来实现。首先,在模板中给`el-input`添加一个`ref`属性,例如`ref="inputRef"`。然后,在点击事件处理程序中,通过`this.$refs.inputRef.$el.focus()`将焦点设置到输入框上。
以下是修改后的代码示例:
```html
<el-table-column
v-show="itemheader.name == '备注'"
v-for="(ite, indd) in itemheader.children"
:key="indd"
:label="ite.name"
min-width="110"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
<div
@click="clickbz()"
v-if="ite.name == '监控备注' && !showInput"
:style="{
color: scope.row[ind].color ? scope.row[ind].color : 'white',
width: '100%',
height: '30px',
cursor: 'pointer',
}"
>
{{ scope.row[ind].children[indd].value }}
</div>
<el-input
ref="inputRef"
v-if="showInput && ite.name == '监控备注'"
size="mini"
v-model="scope.row[ind].children[indd].value"
@blur="
changeBz(scope.row[ind].children[indd].value, scope.row[1].resId)
"
style="width: 90px"
></el-input>
<div
v-if="ite.name != '监控备注'"
:style="{
color: scope.row[ind].color ? scope.row[ind].color : 'white',
}"
>
{{ scope.row[ind].children[indd].value }}
</div>
</template>
</el-table-column>
```
```javascript
clickbz() {
clearInterval(this.timer);
this.showInput = true;
this.$nextTick(() => {
this.$refs.inputRef.$el.focus();
});
},
```
在点击事件处理程序中,使用`this.$nextTick()`来确保在更新DOM后设置焦点。然后,使用`this.$refs.inputRef.$el.focus()`将焦点设置到输入框上。这样,当点击表格内的输入框时,输入框将自动聚焦。
阅读全文