提示:持续更新一些在小程序中遇到重难点,文章内容很多其他博主也写了,建议点击链接观看原文。
工作接触小程序了,主要会记录小程序的一些内容
data 是页面第一次渲染使用的初始数,页面加载时,data 将会以JSON字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型:字符串,数字,布尔值,对象,数组
this.setData({})用于将数据从逻辑层发送到到视图层(异步),同时也会改变this.data的值(同步)
用this.data而不用this.setData({})会造成页面内容不更新的问题。this.data数据变了,但是视图不会变。
this.data与this.setData的关系就是this.setData里面存储的是this.data的副本,而界面是从this.setData里面托管的this.data的副本取数据的。所以我们更改this.data并不会直接更新界面,因为这个时候的this.setData里面的副本还是没有更新前的
js页面中如何使用data里面的数据? 答:必须通过this.data.属性获取
如何修改data里面的数据? 答:this.setData({属性:值});直接使用data里面的属性
用于js存在作用域和闭包问题,this往往指向当前对象,所以就容易产生问题。目前想到两种方式
第一种:一开始赋值给一个参数 即 var that = this
第二种:直接使用箭头函数。
当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。
Page(Object object)
注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等
在Page({})外面声明的变量,
进入这个页面后,你又退出了,虽然页面没有在页面堆栈中了,但是页面其实还在内存中(小程序为了加载速度),你下次进入页面,test的值依然还保留着,每次都+1。
var test = 0;//外部声明的变量
Page({
onLoad(){
test+=1;
console.log(test);
}
})
想要每次都清空,只能在onLoad或者onUnload里面重置一下。
事件详解
https://www.cnblogs.com/eline2018/p/10394974.html
app.js是小程序逻辑 ,app.json是小程序公共设置,app.wxss是小程序公共样式。在app.js文件中 , 定义了一些生命周期方法 , onLaunch,onShow,onHide,onError,以及任意开发者添加的函数或者数据(通过this可以访问)
打开程序依次执行了app.js下面onLaunch和onShow方法,以及page页面中的onLoad,onShow和onReady方法。其中 , onLaunch, onShow 方法会返回一个参数对象, 里面包含了三个参数 , path,query和scene ,path是打开小程序的路径。
注意:
(1)App() 必须在 app.js 中注册,且不能注册多个。
不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。
(2)不要在 onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
(3)通过 getApp() 获取实例之后,不要私自调用生命周期函数。
## 小程序中的脚本执行顺序
小程序的执行的入口文件是 app.js 。并且会根据其中 require 的模块顺序决定文件的运行顺序,当 app.js 执行结束后,小程序会按照开发者在 app.json 中定义的 pages 的顺序,逐一执行
e.target与e.currentTarget区别详解
e.currentTarget.dataset和e.target.dataset都可以获取数据效果一样,除非遇到了事件冒泡
target:触发事件的源组件(事件注册/绑定所在组件
currentTarget:事件触发的当前事件(当前事件,可能是触发事件的源组件,可能是触发的事件组件(即触发事件源组件的子元素),此时点击子元还是父元素,都是当前事件,应用e.currentTarget)。
其他文章解释
data-xx 的作用是在事件中可以获取这些自定义的节点数据,用于事件的逻辑处理
比如 写一个list列表 想知道点击的list列表的那一个item ,比如获取点击的图片,等等
使用data-xx 需要注意的 xx 是自己取的名字, 后面跟着的渲染一定要是使用的值,否则无效
比如点击的是list 后面跟的是list的值,如果是图片后面就要是图片url的地址,
**
**
详解 | 小程序页面间如何进行传递数据(好文推荐)
数据格式转换
this.SetData中对象、数组值得修改
动态修改数组的值
var param = {};
var string = "array["+index+"].text;
param[string] = 'changed data';
that.setData(param);
下面内容原文链接 https://blog.csdn.net/a458383896/article/details/89787442
传递数组:
其他数据格式暂时不知道,我的数据主要是对象数组格式,传递的时候总是获取不到数据。所以网上找了好多没有具体方案。自己写了一下。仅供参考!
arraylist2 是一个数组,数据格式是[{“id”,1},{“content”,“我的”}]
格式差不多就是这样 然后将它JSON.stringify()传递一下
wx.navigateTo({
url:'../textcontent/textcontent?arraylist2=' + JSON.stringify(that.data.arraylist2),
success:function(res) {
console.log("成功回调",res);
},
fail : function(res){
console.log("失败回调",res);
}
})
在下一个页面 获取值然后JSON.aprse()转换成json对象
data: {
arraylist:""
},
onLoad: function (options) {
console.log("options", options.arraylist2.title);
//var array = options.arraylist2.split(",");
var array = JSON.parse(options.arraylist2);
this.setData({
arraylist: array
})
console.log("arraylist", this.data.arraylist);
},
在需要数据的页面就可以获取{undefined{arraylist.title}}
<view class="t-bg tx-l uinn" style='text-indent:40rpx;'>{{arraylist.title}}</view>
<view class="t-gra tx-l uinn ulh-a" style='text-indent:40rpx;'>{{arraylist.content}}</view>
微信小程序 跳转传参数 传对象
微信小程序跳转传参
一般都是传字符串到下一页,如果要想传对象怎么办呢?
我的解决办法是先将对象转换为json字符串然后到下个页面将json字符串,再转化为对象。如下:
let str=JSON.stringify(e.currentTarget.dataset.item);
wx.navigateTo({
url: '../toMybaby/babyDetail/babyDetail?jsonStr='+str,
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
onLoad:function(options){
// 生命周期函数--监听页面加载
let item=JSON.parse(options.jsonStr);
this.setData({ward:item});
},
git 回退清楚描述
git回退简易讲解
操作步骤如下:
1、找到你误提交之前的版本号
2、git revert -n 版本号
3、git commit -m xxxx 提交
4、git push 推送到远程
git merge命令只能合并本地分支,无法直接合并远程分支,因此在合并之前需在分支上使用git pull命令获取最新代码。
1、主干合并分支
进入分支,更新分支代码
(branch)git pull;
切换主干
(branch)git checkout master;
在主干上合并分支branch
(master)git merge branch --squash
提交合并后的代码
(master)git commit -m ‘合并备注’
将代码推送到远程仓库
(master)git push
2、分支合并主干
进入主干,更新主干代码
(master)git pull;
切换分支
(master)git checkout branch;
在分支上合并主干
(branch)git merge master --squash
提交合并后的代码
(branch)git commit -m ‘合并备注’
将代码推送到远程仓库
(branch)git push
注意区分老方法和最新方法的引入
详细文章讲解