正在学习微信小程序开发,参考查找的博客资料,官方文档整理一些可能用到的基本知识和要注意的问题,下面都是本人亲自测试可以实现的,如果有什么问题,请指出来或者参考下原文。
一.控件初步使用 参考 控件基本使用
1.按钮与事件点击
a.放置一个按钮,通过bindtap绑定事件btnClick,{{ }}里面的是从js中获取的按钮内容
<button type="primary" bindtap="btnClick"> {{btnText}} </button>
b.在js文件的data中写下面的内容,初始化界面数据
data: {
btnText:'按钮初始内容', //按钮初始化内容,另外两个其他地方使用
isTextshow:true,
news:['aaa','bbb','ccc'],
},
c.编写按钮点击回调函数,写完后编译运行,在点击按钮时,按钮内容改变
btnClick:function(){
this.setData({ btnText:'点击后的内容'})
}
2.列表显示数组内容
a.通过下面的代码,就可以将js文件中写的初始化数据news内容显示出来,news代表数组名字,newsItem代表每个参数的别名
<view wx:for="{{news}}" wx:for-item="newsItem">
{{index}}: {{newsItem}}
</view>
3.页面加入头部和底部 参考 -> 小程序引入公共页面几种情况
(1).普通引入
a.在pages文件夹添加一个template文件夹,新建一个header.wxml文件加入代码
<template name='header'>
<view>header</view>
</template>
b.在需要引入的文件中添加下面的代码引入,第二行中的header需要和头部文件中的name值一样,记得后面的反斜杠,不然会报错
<import src="/pages/template/header.wxml" />
<template is="header" />
(2).需要给引入的文件传参数的情况
a.下面是需要引入的文件内容
<template name="msgItem">
<view>
<text>This is template.wxml文件,我是一个模板</text>
<view>
<text> {{index}}: {{msg1}} </text>
<text> {{msg2}} </text>
</view>
</view>
</template>
b.引入文件并传参
<import src ="/pages/template/footer.wxml"/>
<template is="msgItem" data="{{index:1,msg1:'msg1数据',msg2:'msg2数据'}}"/>
(3).列表item模版,根据参数不同调用不同模版(循环引用,并且添加判断条件)
a.首先在js文件中数据源data中加入list数组
data: {
list:[
{ name: '张三', age: 15 },
{ name: '李四', age: 25 },
{ name: '王五', age: 18 },
{ name: '赵六', age: 19 },
]
}
b.在模版文件中写入下面代码
<template name="msgItem">
<view class="template_style">
<text> name: {{name}} </text>
<text class="template_age_style"> age: {{age}}</text>
</view>
</template>
<template name="msgItem2">
<view class="template_style">
<text> name: {{name}} </text>
<text class="template_age_style"> age: {{age}}</text>
<text>我是一个未成年</text>
</view>
</template>
c.循环引用模版
<import src ="../template/template.wxml"/>
<view wx:for="{{list}}">
<template is="{{item.age >= 18 ? 'msgItem' : 'msgItem2'}}" data="{{name:item.name,age:item.age}}"/>
</view>
4.为模版引入样式文件
a.在引入模版文件的文件夹中的wxss文件中添加下面代码,为模版引入样式文件
@import "/pages/template/footer.wxss";
二.事件触发
1.点击事件冒泡 参考文章
a.可以通过<view class="view2" bindtap="view1click" id="view2">方式给控件绑定事件
b.使用下面的方式接收触发事件,但是父级通过同样的方式绑定事件时父级事件也会触发
view1click : function(event){
console.log("view1click")
console.log(event)
},
c.防止事件冒泡的方式就是把 bindtap 关键字换成 catchtap
d.在event对象中,包含了传递过来控件的信息,可以根据这些做业务逻辑判断
三.几种传参方式 这里是原文
1.添加点击事件,js用navigateTo跳转传参
a.在js回调函数中使用下面的方式跳转
wx.navigateTo({
url: '../index/index?id=1&name=aaa',
})
b.在跳转后的index页面对应的js文件onLoad方法中获取
onLoad: function (options) {
var id = options.id //获取值
},
2.全局变量
a.在app.js全局变量中添加添加要传的参数
globalData:{
id:null
}
b.在点击后的毁掉函数中,跳转前赋值
var app = getApp();
app.globalData.id = 2
c.在跳转后页面的js文件onLoad方法中获取
var app = getApp();
var id = app.globalData.id
3.列表index下标取值
a.wxml页面,如果需要传递多个,可以写多个data-[参数]的方式进行传递
<button bindtap='clickMe' data-id='1'>点击</button>
b.js代码,通过wxml设置data-[参数名]传递参数,[参数名]只能是小写
clickMe:function(e){
var id = e.currentTarget.dataset.id
console.log(id);
},
网友评论