小程序开发所遇的问题以及一些小细节

image.png

1.基本知识

bindtap (冒泡)
catchtap (防止冒泡)
catchtouchmove
e.currentTarget.dataset.index(data- 里面使用的定义)
import { apiV1 } from '../../utils/util';
e.detail.current(swiper里面使用的属性,e.detail / current)

image.png
image.png
image.png

根据官方文档的对应的组件,api,其有它的对应属性可以使用,而e.detail/e.target/e.currentTarget/e.currentTarget.dataset是表示一个对象,后面跟着字段

2. 点击图标变化

image.png

3.点击直接跳转

image.png

4. 相当js原生定义一个元素(这个是data-属性)

image.png

5.查看调试信息,初学者最好开启容易看到debug

image.png

6.哪个文件放在这就哪个文件是项目启动时出现的首页

image.png
image.png

7.定义获取全局变量

image.png

8.SetData用法:

image.png

9.跳转页面后设置的返回功能(点击后返回)

image.png

10.需要装nodejs才生效require

image.png
11.放common公共模块盒,其他页面可以require common.js/a.js里面的函数事件或其他,common.js也可以require a.js
image.png

可以在其他页面中引用这commonjs文件


image.png
image.png
image.png

12.获取后台数据,在前端中渲染数据出来:

(其中api是指封装好的获取接口的写法,URL_INDEX已定义是接口路径)


image.png
image.png
image.png

13.调用全局方法

image.png

14.页面生命周期

image.png

15.布局基础(盒模型flex)

image.png

父级用了display:flex;子级也会用到,不影响
换行与不换行flex-wrap

image.png

对齐方法justify-content


image.png
image.png

flex-grow(在空间剩余前提下,可以设置扩展,来扩大某个元素的范围)


image.png

flex-shrink(在空间不足前提下,可以设置等比缩放)


image.png

16.全局app.js

image.png

注意:


image.png
image.png
补充:

image组件不能像jq一样用alt(加载前出现的图片)
进度条组件设置不了椭圆样式
加载小程序项目时出现的后台获取json数据获取不出时,出现空白,不能解决

17.绑定数据判断

image.png

从orderList.js页面里的拼团中订单跳转到orderGroup.js中,它页面的接口需要设置orderid为某条数据的具体值,才能显示数据出来


image.png
温馨提示:

关于上拉加载数据,需要页码page/offset,设置在wx.request(相当公司的api中)的data中:
在js中的data设置一个pageNo初始值为1,然后在wx.request前面设置this.data.pageNo++,然后在wx.request的data中设置page:this.data.pageNo;然后设置this.setData({pageNo:this.data.pageNo})

注意一点:看公司的需求接口网站的接收参数和返回参数(接收参数一般是在wx.request中的data定义目的为了可以返回参数--有时需要做到这步才能获取到数据)

关于规格那出现的小问题:
当wx:if在最外面,而它里面也有一个wx:for,隐藏部分的应该全放在wx:for里面

注意:一处不能同时定义两个不能点击事件的动画animation="{{}}"

18.onPullDownRefresh 下拉刷新

onPullDownRefresh: function () {
// 下拉刷新
wx.stopPullDownRefresh();
},

19.获取用户信息wx.userInof

image.png

20.wx.request中的data里面传值

image.png

21.接口数据为全局,调用渲染后可以重用(全局与局部的区别)

Wxml


image.png

js:data


image.png

事件/接口


image.png

22.跳转事件判断(说明的就是这部分)

image.png

23.微信支付接口和确认收货

image.png
image.png

24.上拉加载更多(上拉触发)

https://coding.net/u/toBeMN/p/MINA-imitate-cnode-community/git(借鉴别人文章--有类似项目在这)

http://www.wxappclub.com/topic/384(借鉴别人文章)

Wxml 和js


image.png
image.png

项目的例子


image.png

wxml


image.png

js


image.png
image.png

25.动画 淡入淡出和弹跳

image.png
image.png
image.png

结合显示隐藏来设置淡入


image.png
补充:

一个step代表一组动画,可以在一组动画设置多个动画

可以这样表示


image.png
image.png

启动弹起(相同的动画,也需要在相对应的位置绑定不同的animation)


image.png
image.png
补充:
image.png
image.png

26.倒计时

image.png
image.png
image.png

设置多个倒计时,可能用不了数组来设置,需要分开设置


image.png
image.png
image.png
image.png

27.遮罩背后不动,用到catchtouchstart事件

image.png

阻止弹窗时背后不要动


image.png

wxml

image.png

data


image.png

函数事件


image.png

27.setInterval与clearInterval

image.png

加载的图标显示


image.png

scroll-view纵向滚动还有点击锚点
wxml

<scroll-view scroll-y="true" style="height: 200px;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">
<view id="green" class="scroll-view-item bc_green" style="background:red;"></view>
<view id="red" class="scroll-view-item bc_red" style="background:yellow;"></view>
<view id="yellow" class="scroll-view-item bc_yellow" style="background:skyblue;"></view>
<view id="blue" class="scroll-view-item bc_blue" style="background:green;"></view>
</scroll-view>
<view class="btn-area">
<button size="mini" bindtap="tap">click me to scroll into view </button>
<button size="mini" bindtap="tapMove">click me to scroll</button>
</view>

js

var order = ['red', 'yellow', 'blue', 'green', 'red']
Page({
data: {
toView: 'green',
scrollTop: 100,
scrollLeft: 0
},
//滚动条滚到顶部的时候触发
upper: function (e) {
console.log(e)
},
//滚动条滚到底部的时候触发
lower: function (e) {
console.log(e)},
//滚动条滚动后触发
scroll: function (e) {
console.log(e)},
//点击按钮切换到下一个view
tap: function (e) {
for (var i = 0; i < order.length; ++i) {
if (order === this.data.toView) {
this.setData({
toView: order[i + 1]
})
break
}
}
},
//通过设置滚动条位置实现画面滚动
tapMove: function (e) {
this.setData({
scrollTop: this.data.scrollTop + 10
})
}
})
var order = ['red', 'yellow', 'blue', 'green', 'red']
Page({
data: {
toView: 'green',
scrollTop: 100,
scrollLeft: 0
},
//滚动条滚到顶部的时候触发
upper: function (e) {
console.log(e)
},
//滚动条滚到底部的时候触发
lower: function (e) {
console.log(e)
},
//滚动条滚动后触发
scroll: function (e) {
console.log(e)
},
//点击按钮切换到下一个view
tap: function (e) {
for (var i = 0; i < order.length; ++i) {
if (order === this.data.toView) {
this.setData({
toView: order[i + 1]
})
break
}
}
},
//通过设置滚动条位置实现画面滚动
tapMove: function (e) {
this.setData({
scrollTop: this.data.scrollTop + 10
})
}
})


image.png

28.显示人物头像和名称 弹窗提醒

wxml


image.png

js

var util = require('../../utils/util.js')
import { URL_SHOP_TIPS} from '../../utils/urls';
import { api } from '../../utils/util';
Page({
data: {
// logs: [],
orderDatas:[],
nickname:'',
headimg:'',
isShowTips:false
},
onLoad: function () {
// this.setData({
// logs: (wx.getStorageSync('logs') || []).map(function (log) {
// return util.formatTime(new Date(log))
// })
// })
this.showNoticTip();
},
showNoticTip:function(){
let that = this;
setTimeout(function () {
that.setData({
isShowTips: false
})
}, 5000)
let tempdata=this.data.orderDatas;
if(tempdata.length==0){
api(URL_SHOP_TIPS, { pagetype: 1 }, data => {
let tempdata = data.data;
if (tempdata) {
let n = Math.random();
let index = Math.floor(tempdata.length * n);
let orderdata = tempdata[index];
tempdata.splice(index, 1);
this.setData({
orderDatas: tempdata,
nickname: orderdata.nickname,
headimg: orderdata.headimg,
isShowTips: true
})
}
}, true, false)
}else{
let n = Math.random();
let index = Math.floor(tempdata.length * n);
let orderdata=tempdata[index];
//删除当前显示的数据
tempdata.splice(index,1);
this.setData({
orderDatas: tempdata,
nickname: orderdata.nickname,
headimg: orderdata.headimg,
isShowTips: true
})
}
setTimeout(function(){
that.showNoticTip();
},6000)
}
})

29.在wxfor设置的同一个结构布局,可对应算出不同的时间戳

image.png
image.png

wxml


image.png

js


image.png

30.详情页跳转url

(使用data-区别它们之间的跳转标识)


image.png
补充说明:

只能分享给朋友,不能分享朋友圈;可以添加到手机桌面,只是相当快捷键

window相当于wx

image.png

31.跳转页面设置

image.png
image.png

32.用setData强制改变数据

image.png

33.项目的预览按钮只有注册了appID才能预览

image.png

34.路径设置

image.png

窗口window、tabBar底部

(在pages这定义新建的文件夹,自动新建)
文件内不能添加注释行


image.png
注意
image.png
image.png

35.生命周期函数

image.png
image.png
image.png

36.页面相关事件处理函数

(下拉刷新,用户转发)


image.png

37.App.json定义的头部标题和底部导航

image.png

38.轮播

image.png
image.png
image.png

39.加载loading

image.png
image.png

40.scroll-view/scroll-x(滚动条横纵向滑动)

注意:

使用竖向滚动scroll-y需要设置高度height

image.png
image.png
image.png

41.数据请求wx.request(相当ajax)

image.png

42.说明:this.setData相当return

movable-view/movable-area

image.png
image.png
image.png
注意:

movable-view必须在<movable-area/>组件中,并且必须是直接子节点,否则不能移动。

43.转发

image.png
image.png

44.点击事件

image.png

45.icon小图标

image.png
image.png
image.png

46.text文本(动态增加删除元素)

image.png
image.png
image.png

47.progress进度条

image.png
image.png

48.button按钮

image.png
image.png
image.png
image.png
image.png

49.checkbox多选按钮

image.png
image.png
image.png

50.from表单

image.png
image.png
image.png

51.input输入框

(有一处用到相当vue中的v-model双向数据绑定)


image.png
image.png
image.png
image.png
image.png
image.png
image.png

52.label标签

image.png
image.png
image.png
image.png
image.png
image.png

53.客服

(客服设置的账号,是在微信小程序平台注册后登录设置就好)


image.png
image.png

官方文档这部分资料目的是说明当用户发送消息自动生成的json数据


image.png

54.事件

image.png

55.时间戳(时间相差值,几时几分几秒)

image.png
image.png
image.png
image.png
补充:
image.png

56.获取后台json数据的区别

(本人的理解:jq和小程序的区别)

JQ :

ajax获取数据,用$.ajax,都在js中获取到的数据,获取到的数据在ajax中,用类别定义对应的元素获取后台的相对应json字段

小程序:

wx.require获取数据 当用到多个类似结构数据。可以用wx.for={{arry}},在data定义一个数组,data:{ arry:{} },然后在后面的onload(也可以放在其他的全局函数内)中用wx.require定义tempdata=data.product(这个product是后台的json数据的名字,这可以改变),然后需要获取字段,就在this.setdata那改变arry:tempdata (跟jq不同是,在wxml中已经用 arry.对象 形式表示了,不需要在js中的wx.require中再用类别分明对应不同元素位置插入相对应的元素字段)

57.commodity收藏(是否已收藏)

直接在页面中判断是否收藏,而改变它的图片路径


image.png
image.png

58.从本地缓存中同步修改指定 key 对应的内容

image.png
image.png

本文作者lilyping
越努力,越幸运
原文链接:https://www.jianshu.com/u/3908e601f4ec
微信公众号:BestLilyPing
github:https://github.com/lilyping
Demos源码地址:https://github.com/lilyping

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容