uni-app开发指南

1,123次阅读
没有评论

uni-app内置组件picker的change事件e.target.value不同平台不同数据类型

uni.chooseLocation() 无反应

1、打开微信公众平台申请权限

【开发】–【开发管理】–【接口设置】–点击去开通,开通之后才可以使用。

2、在配置文件中添加权限。

uni-app的修改 manifest.json 文件。

{
  "mp-weixin": {
    "permission": {
      "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
      }
    },
    "requiredPrivateInfos": ["chooseLocation"]
  }
}

如果是原生开发,则需要修改app.json文件

{
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  },
  "requiredPrivateInfos": [
    "getLocation",
    "chooseLocation"
  ]
}

相关文档:

HbuilderX可以自动打开微信开发者工具,但无法打开对应项目的原因

主要表现:

  • HbuilderX没有报错
  • 能自动打卡微信开发者工具
  • 无法打开对应的项目

可能是你没有权限,可能会造成这种原因的一个是你的微信账号没有该小程序的“开发者权限”,那么就需要在登录“微信公众平台”的【管理】-【成员管理】-【项目成员】添加“开发者权限”。

还有一种可能就是你的小程序AppID写错了。

教程:

内置组件Radio无法数据双向绑定

uni-app 内置组件的radio组件无法双向绑定,不能响应式的更新组件状态。

  • radio-group的v-model无效,官方示例文档也没有标识v-model的使用。
  • radio组件checked不能通过数据响应。

wot-design-uni就可以在radio-group上使用v-model实现数据双向绑定。

参考:

VS Code开发环境

  • uni-create-view 快速创建 uniapp 视图与组件!可以配置模板生成的风格

uni-app ref获取不到元素

环境:uni-app、vue@3.5.13、compostion setup

uni-app官方说明了:ref 被用来给元素或子组件注册引用信息,非 H5 平台只能获取 vue 组件实例不能获取到内置组件实例,点击查看,全平台兼容方案使用:uni.createSelectorQuery() | uni-app官网

uni.createSelectorQuery().in(this)
    .select('.comment-input')
    .node()
    .exec(res => {
      console.log('方法1获取:', res);
      if (res[0] && res[0].node) {
        res[0].node.focus()
      }
    })

其他方式:

简单标签例如:view这种

<view ref="el1">Hello uni-app</view>

const el1 = ref(null)
console.log(el1.value.$el.innerHTML)

使用div标签替代view就可以直接获取元素

<div ref="el1">Hello uni-app</div>

const el1 = ref(null)
console.log(el1.value.innerHTML)

如果是复杂的标签,比方input,在uni-app中会生成嵌套代码:

<uni-input>
  <div class="uni-input-wrapper">
    <div class="uni-input-placeholder input-placeholder">
      评论
    </div>
    <input/>
  </div>
</uni-input>

所以得使用querySelector

<input ref="el1">Hello uni-app</input>

const el1 = ref(null)
console.log(el1.value.$el.querySelector('input').focus())

如果是外面还包了一层v-show或者v-if,得用`querySelectorAll再加上nextTick或setTimeout

nextTick(() => {
  el1.value.$el.querySelectorAll('input').forEach(element => {
    element.focus()
  });
})

setTimeout(() => {
  el1.value.$el.querySelectorAll('input').forEach(element => {
    element.focus()
  });
}, 60)

如果只是想做输入框聚焦、失焦功能,可以用focus属性:

<input :focus="isFocus">
const isFocus = ref(true)

城市选择组件

这东西需要配合unicloud使用,而且有个不过就是H5用不了,具体表现为拿不到组件的实例,无法调用实例的open方法

citySelect.value.open() // Vue3 无效
this.$refs.citySelect.open(); // Vue2 同样无效,试过了
  • 一直定位中
    • 这个组件的原理就是 :getLocation -> 通过获取到的经纬度->调用服务端逆地址解析->拿到地址
    • 由于没有配置云端的amap对应的web服务的key,导致无法解析。
    • unicloud-city-select 城市选择组件 按照这个文档说的去配置一下key就可以了,我这里使用的高德地图,到高德申请”Web服务”的key就行了。
module.exports = {
	"default": "amap",
	"key": {
		"amap": "443a7bafsdafsfs8fdcd9a9acf54"
	}
}

uniCloud多项目共用同一个服务空间的治理问题

  • APP项目(不存放云函数)
  • uni-admin项目(存放函数)
    • 城市选择、地图解析等
    • APP升级中心

uniCloud遇到的问题:未匹配到云函数

A项目关联B项目的云空间,A调用B项目的函数。

Error: 未匹配到云函数[uni-stat-receiver] – DCloud问答

关掉所有HBuilderX,重新启动项目A,这时候会自动启动项目B的函数。

项目A关联项目B,项目A原有的云函数会被隐藏。

正文完
 0
wujingquan
版权声明:本站原创文章,由 wujingquan 于2023-12-28发表,共计2926字。
转载说明:Unless otherwise specified, all articles are published by cc-4.0 protocol. Please indicate the source of reprint.
评论(没有评论)