小程序开发

小程序开发

getApp()

  • 获取 小程序全局 app 对象的函数或数据。
  • 当前页面更新了 appData, 其他页面要响应到更新,必须再使用 setData 更新

1
2
3
4
"window":
{
"restartStrategy": "homePage" // app.josn 中配置 冷启动(重新启动)打开的页面
}

rpx  转   px

  • app. js 的全局 data 中 注入 当前设备的 px 转 rpx 比例, 需要响应转换 px 的 page 都拿得到, 巴巴适适的
  • 某些组件属性 只支持输入 px 单位时,想不同设备自适应,就可以使用  **pxb **了
1
2
3
4
5
 globalData: {
// rpx 转 px的比例
// 某属性,不支持rpx时, 模拟出rpx, 同样自适应
pxb: wx.getSystemInfoSync().windowWidth / 750,
}

model:

  • 双向绑定 需要在 value 前加上 model:value
  • 这样改变输入框得值,data 中得值也会改变。
  • 如果没有 model: 就只能通过 this.setData 来改变 input 中 value 的值,input 中的值改变,则 data 不会改变的。
  • 或者 bindinput 绑定一个 input 表单变化的事件,通过 event 对象更新 data 中的数据也可以

custom

单个页面的 json 配置中 也是可以设置 隐藏官方 navbar 的 应该是新特性。

=

“navigationStyle”: “custom”

  • 使用 wx:for 或 wx:if 时。 在 block 标签上使用
  • block 只是个包装标签不会渲染的, 只是个处理 if for 等 控制属性的工具人标签。
  • 可以使其中包括组件标签,可判断多个了组件标签了

setData 骚操作

就目前的理解:this.data.dataName = 新值

就可以新增或改变 该 data 中的数据 但只是在 js 逻辑层的改变

想要把数据 同步到视图层中 必须要使用 setData


**更新 data 中 filter 对象 Room 属性的值  **

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
selectedFilterItem(e) {
var dataset = e.currentTarget.dataset
this.setData({
// 直接使用变量的形式是行不通的
filter[dataset.key]: dataset.value
})
// 下面两种方式是 OK 的
-- 先在这里拼接出一个字符串
let key = 'filter.' + dataset.key
this.setData({
'filter.Room': dataset.value
//把对应的成员变量用用方括号[]包裹起来
[key]: dataset.value
})

&&

1
2
3
4
5
6
const index = e.currentTarget.dataset.indexs
const item = `list[${index}].data`
this.setData({
[item] : e.detail.value
})
}

注意

小程序的 setData 里面处理的 data 的 key 必须是字符串,所有不接受 引用数据类型

但是可以使用字符串拼接,或模板字符串实现。 但还是需要 [ ] 包括才有用

1
2
3
4
5
6
const index = e.currentTarget.dataset.indexs;
const item = `columnsList[${index}].data`;
// const item2= "columnsList["+index+"].data"
this.setData({
[item]: e.detail.value,
});

wxs (WeiXin Script)

https://developers.weixin.qq.com/miniprogram/dev/reference/wxs/01wxs-module.html

  • 多用于性能优化,小程序自己的脚本语言,但功能不怎么全,
  • 本质代码是 js, 但也不完全是,它也又是自己的一些规则
  • 可以在 wxml 中 当作标签导入使用

template

https://blog.csdn.net/qq_39174924/article/details/103341414

  • 就是模块,component 组件其实是模块的升级版。
  • 模块负责的是静态的 ui 的展示,而组件要有数据上的交互
  • 模块只有 wxml 和 wxss 组件有还有 js 和配置组件的 josn 文件
  • 引用:
  • 开发工具自动生成的 骨架屏 就是 template 模板
    • 骨架屏是页面的一个空白版本,通常会在页面完全渲染之前,通过一些灰色的区块大致勾勒出轮廓,待数据加载完成后,再替换成真实的内容。通常在小程序中,我们需要手工维护骨架屏的代码,当业务变更时,同样需要对骨架屏代码进行调整。为了开发的便利,开发者工具提供了自动生成骨架屏代码的能力。

selectComponent

  • 可在父组件实例中 通过 this.selectComponent(‘子组件 id’) 调用到子组件的方法或属性
  • 在 onload 钩子中可能有问题。推荐放到 onshow 或者更后面的周期里

>> 小程序获取节点信息

https://blog.csdn.net/weixin_34248849/article/details/88069879

NodesRef 节点对象

1.1、NodesRef 是什么?

NodesRef 用于获取 WXML 节点信息的对象

1.2、NodesRef 具备的方法?

获取节点的相关信息

获取节点的相关信息

第一步、 创建 SelectorQuery 查询对象

<font style="color:#C18401;">let</font> <font style="color:#383A42;">query = wx.createSelectorQuery()</font>

第二步、 获取节点对象

方法一:query.select(queryString) 选择第一个匹配节点

方法二:query.selectAll(queryString) 选择所有匹配节点

– queryString  就是 css 那些选择器而已。


小程序请求

1. 使用 fly  发送请求

因为小程序没得 windows 对象   所有无法使用   XmlhttpRequest 发送 ajax 请求   自然 axios 那些都莫法用。不然就用自家的 wx:request

  • 但 fly  不借助 XmlhttpRequest 对象   所有是很巴适的第三方请求库
  • 就是帮你封装了哈 wx:request() 适配了哈

2. 小程序使用 async await 发送请求 超实用

    https://segmentfault.com/a/1190000021966277

**>> 小程序 app.js 中的  ****onLaunch 可定义全局使用的 wx 接口**

  • app.js 中

**    **

  • 其他 js 中直接使用


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!