vue中,js函数如何访问data()里面的变量,有图,求赐教

aierda 2020-03-28 06:11:55

<script>
export default {
data() {
return {
defaultExpandKeys: [] //在下面的递归函数中被访问
}
},
methods: {
search() {
loopTreeForSearchUser(this.organizationTreeData, this.keyword) //这里调用一个js递归函数
}
}
}

function loopTreeForSearchUser(nodes, organizationName) {
nodes.forEach(function(item, index, array) {
if (organizationName !== '') {
item.className = 'SelectedNode'
this.defaultExpandKeys.push(item.parendId) //这里的this无法识别,求教有什么解决的办法吗?
} else {
item.className = null
}
if (item.children) {
loopTreeForSearchUser(item.children, organizationName)
}
})
}
</script>

如上面的代码所示,1.js函数loopTreeForSearchUser如何访问data()里面的变量defaultExpandKeys呢?
2.另外假如把loopTreeForSearchUser放在methods:中去实现,可以吗,我尝试过,好像methods:中
不支持nodes.forEach
...全文
2217 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aierda 2020-03-31
  • 打赏
  • 举报
回复
各位大佬说的都非常好,受教了,小弟终于把问题解决了,谢谢各位的帮忙!
jio可 2020-03-30
  • 打赏
  • 举报
回复
好像methods:中不支持nodes.forEach 只要nodes是数组就支持。没有在export里面的代码this指向是不一样的,拿不到很正常。
虎子8 2020-03-30
  • 打赏
  • 举报
回复
loopTreeForSearchUser肯定是要放到methods里面的, 肯定支持nodes.forEach,你把forEach传入的那个方法先改成箭头函数吧,不然this指向不对
河南棒小伙 2020-03-29
  • 打赏
  • 举报
回复
首先肯定的回答你,你说的2肯定是可以的。 你说的1,调用函数的时候多加一个参数它不香吗?loopTreeForSearchUser(this.defaultExpandKeys, this.organizationTreeData, this.keyword) 函数的定义: function loopTreeForSearchUser(arr, nodes, organizationName) { nodes.forEach(function(item, index, array) { if (organizationName !== '') { item.className = 'SelectedNode' arr.push(item.parendId) //这里的this无法识别,求教有什么解决的办法吗? } else { item.className = null } if (item.children) { loopTreeForSearchUser(item.children, organizationName) } }) } 或者调用函数的时候,第一个参数传入this,在函数里面使用this,就能拿到defaultExpandKeys了,跟上面一个道理。

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧