interrogationModel(dataid:string){ const self = this // 存储this self.scene.children[0].traverse((child:any)=> { if (child.userData && child.userData.twinData) { console.log('查询aaa',dataid , child.userData.twinData.dataId) if (dataid === child.userData.twinData.dataId) { console.log('返回',child) return child } } }) } console.log('查询',app.interrogationModel('67FA304B-ED25-445D-9AB1-A89BBA34C89B')) 中app.interrogationModel('67FA304B-ED25-445D-9AB1-A89BBA34C89B')返回值为空
时间: 2024-03-06 16:47:32 浏览: 68
根据您提供的代码,我发现在函数 `interrogationModel` 中,虽然在找到匹配的对象后使用了 `return child`,但是这个 `return` 语句只是从 `traverse` 函数的回调函数中返回,而不是从 `interrogationModel` 函数中返回。因此,即使找到了匹配的对象,函数也会返回 `undefined`。
解决这个问题的方法是将匹配到的对象存储在 `self` 对象上,然后在 `traverse` 函数中使用 `return false` 来停止遍历:
```
interrogationModel(dataid:string){
const self = this // 存储this
self.foundObject = undefined // 存储匹配到的对象
self.scene.children[0].traverse((child:any)=> {
if (child.userData && child.userData.twinData) {
console.log('查询aaa',dataid , child.userData.twinData.dataId)
if (dataid === child.userData.twinData.dataId) {
console.log('返回',child)
self.foundObject = child // 存储匹配到的对象
return false // 停止遍历
}
}
})
return self.foundObject // 返回匹配到的对象
}
```
这样,当匹配到对象时,函数会返回匹配到的对象,否则会返回 `undefined`。
阅读全文