uni-app困扰很久的问题,小白求指点

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app困扰很久的问题,小白求指点
我只是想求data中earningsDtos这个数组每一项的money之和,感觉ts几秒钟解决的问题,在uts中困扰了几天,求指点一下,初学者不易

[⁠java.lang.ClassCastException⁠]‍ {cause: null, message: “io.dcloud.uts.UTSArray cannot be cast to io.dcloud.uts.UTSJSONObject”}

try {  
    const res = await getDividendHouseSearch_Api({  
        houseId: 0  
    })  
    if (res['code'] == 200) {  
        const resData = (res['data'] as UTSJSONObject);  
        const _earningsDtos = resData['earningsDtos'] as Array<UTSJSONObject>;  

        // for (let i = 0; i < _earningsDtos.length; i++) {  
        //     _allMoney += _earningsDtos[0].money as number;  
        // }  
        console.log("金额总计", _earningsDtos[0]['money']) // 只要[]访问,直接报错,为什么???  

    }  
} catch (err : any) {  
    console.error(err);  
}

6 回复

如果是这一句的话“const resData = (res[‘data’] as UTSJSONObject); ”,那么提示的很清楚了啊,res[‘data’]引用的是个数组,而不是一个UTSJSON对象。UTS中,数组不是JSON!


如果是:“const _earningsDtos = resData[‘earningsDtos’] as Array<UTSJSONObject>;”这一句的话,也是一个道理。 resData[‘earningsDtos’]里的每个元素,不是UTSJSONObject,而又是一个数组!

怎么给二维数组设置类型,我发现earningsDtos这个是个二维数组,直接earningsDtos[0]会报错,是类型问题吧

console.log(’____arrs:’, houseData.value.earningsDtos[0] ) //earningsDtos是二维数组,这里下标0是数组,但还是报错:error: No get method providing array access‌, 二维数组怎么用下标访问子元素呢?

你打印下type类型,再查查UTS规范吧。我这里光靠眼看,只能说到这程度了。。。还有就是UTSArray是不是有个toArray转普通数组的方法,你都试一试。按说就是个语法问题。

针对你在uni-app中遇到的困扰,这里提供一个简单的示例代码,帮助你理解uni-app的一些基础概念和常见用法。假设你遇到的是页面跳转、数据绑定和事件处理这三个常见问题,以下是一个简化的代码案例:

1. 页面跳转

在uni-app中,你可以使用navigateTo方法实现页面跳转。假设我们有两个页面:pages/index/indexpages/detail/detail

index.vue

<template>
  <view>
    <button @click="goToDetail">Go to Detail</button>
  </view>
</template>

<script>
export default {
  methods: {
    goToDetail() {
      uni.navigateTo({
        url: '/pages/detail/detail?id=123'
      });
    }
  }
}
</script>

detail.vue

<template>
  <view>
    <text>Detail Page - ID: {{ id }}</text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      id: ''
    };
  },
  onLoad(options) {
    this.id = options.id;
  }
}
</script>

2. 数据绑定

数据绑定是Vue.js(uni-app基于Vue)的核心特性之一。

example.vue

<template>
  <view>
    <input v-model="message" placeholder="Type something..." />
    <text>{{ message }}</text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    };
  }
}
</script>

3. 事件处理

事件处理在uni-app中也非常直观,你可以通过@event语法来监听事件。

event.vue

<template>
  <view>
    <button @click="handleClick">Click Me</button>
  </view>
</template>

<script>
export default {
  methods: {
    handleClick() {
      uni.showToast({
        title: 'Button Clicked!',
        icon: 'success'
      });
    }
  }
}
</script>

总结

以上代码展示了如何在uni-app中实现页面跳转、数据绑定和事件处理。这些功能在开发过程中非常常见,理解并掌握它们将帮助你更有效地使用uni-app进行开发。如果你遇到的是其他具体问题,比如网络请求、组件使用等,建议查阅uni-app官方文档,那里有详细的API介绍和示例代码。希望这些示例能帮助你解决问题!

回到顶部