Open douzi8 opened 6 years ago
onCreate
里面不能判断用户是否登录,其他页面回调可以widget/service/filter.wxs
里面, 具体可以参考wxs语法<!-- 过滤器 -->
<wxs src="../../widget/filter.wxs" module="filter" />
<!-- 系统模板 -->
<include src="../../lizard/template/system.wxml"/>
class View extends PageView {
// 错误,不能自定义方法
customCallback () {}
}
let vueConfig = {
// ...
}
class View extends PageView {
}
View.vueConfig = vueConfig
class View2 extends View {
vueLink (list,city) {
// 调用父类的vueLink
let result = super.vueLink(list, city)
result.data.k = 'v'
return result
}
}
// 深度扩展父类的vueConfig View2.vueConfigExtend({ methods: { k2: function () {} } })
7. 获取元素位置
如果需要把页面定位到某个位置,继续调用``PageView#setPagePos``方法
```JavaScript
// $选择单个dom
// $$选择多个dom
// 操作返回的是promise对象
const { $, $$ } = require('../../lizard/dom')
generator(function* () {
let [
offset,
offsets
]= yield [
$('.js-txt').offset(),
$$('.js-txt').offset()
]
console.log(offset)
console.log(offsets)
// 页面锚点功能
this.pageView.setPagePos(offset.top)
}).catch(util.promiseCatch)
每个小程序必须有一个pages/login/
目录,具体代码可以直接复制demo
项目
小icon全部使用单个的svg放本地
如何封装UI组件,参考demo代码
返回promise对象
let confirm = yield Lizard.alert('确认删除订单?')
if (confirm) {
// 点击确认
} else {
// 点击取消
}
// 注意,这里的btns是一个包含字符串的数组
let confirm2 = yield Lizard.alert({ title: '', msg: '', btns: ['确定']})
新增的定位api, 如果用户已经订过位,可以直接读取Lizard.state.address
// 缓存位置
Lizard.state.address (如果为null没有定位)
// 实时定位
Lizard
.startPosition()
.then(() => {
console.log(Lizard.state.address)
})
.catch(() => {
console.log('定位失败')
})
SOA在创建订单成功后,会返回所有支付参数,前端只需要调用
LizardBridge.payment(dataJson).then(res => {
if (res) {
console.log('支付成功')
} else {
console.log('取消支付')
}
})
vue里面的methods参数不同,这里只传入一个参数{ data: event.currentTarget.dataset, detail: event.detail, event:event }
<view bindtap="remove" data-index="1"></view>
<input placeholder="请输入验证码" bindinput="setMobile" />
methods: {
remove ({
data: {
index
}
}) {
},
setMobile ({
detail: {
value
}
}) {
}
}
<!-- 日期格式处理 -->
<view>{{filter.dateFormat(date, 'yyyy年mm月dd日 HH:MM:ss 周C')}}</view>
<!-- 距离显示 -->
<view>{{filter.distance(500)}}</view>
<!-- 价格转整 -->
<view>{{filter.priceInt(200)}}</view>
<!-- 价格展示到分数 -->
<view>{{filter.priceCent(120)}}</view>
<!-- 过滤器 -->
<wxs src="../../widget/filter.wxs" module="filter" />
推送的任务,只有在页面再次显示的时候,自动调用,优先级高于onCache
watch: {
// 监听用户登录了
isLogin (newValue) {
if (newValue) {
let pv = this.pageView
// 只有当前页面显示的时候,在执行
pv.pushOnShowTask(pv.reload, pv)
// 或者
pv.pushOnShowTask(() => {
pv.reload()
})
}
}
}
let vueConfig = {
// input和data双向绑定
// 模板里面的input必须同时使用 bindinput="set_key"这种语法
vModel: ['mobile', 'code'],
methods: {
}
}
<!-- vueConfig methods里面无需在定义set_mobile方法-->
<input type="number" bindinput="set_mobile" value="{{mobile}}" />
<input type="number" bindinput="set_code" />
wx:key属性的值只能是以下两种:
举例:
// 列表数据
// 1. 项目是对象的
const fruits = [{
id: '001',
name: 'apple',
color: 'red'
}, {
id: '002',
name: 'orange',
color: 'yellow'
}, {
id: '003',
name: 'banana',
color: 'yellow'
}]
// 2. 项目非对象
const numbers = [1, 2, 3, 4]
// 3. 多重循环情况
students = [
{
id: 1,
class: '1班',
members: [
{ id: 11, name: 'wang'},
{ id: 12, name: 'zhao'},
{ id: 13, name: 'qian'},
]
}, {
id: 2,
class: '2班',
members: [
{ id: 21, name: 'zhou'},
{ id: 22, name: 'wu'},
{ id: 23, name: 'zheng'},
]
}, {
id: 3,
class: '3班',
members: [
{ id: 31, name: 'li'},
{ id: 32, name: 'deng'},
{ id: 33, name: 'yang'},
]
},
]
<!-- wxml模板 -->
<view wx:for={{fruits}} wx:key="id">{{item.name}}</view>
<!-- key 也可以取属性名 name,即 wx:key="name",只要唯一就行 -->
<!-- numbers的项目不是对象 -->
<view wx:for={{numbers}} wx:key="*this">{{item}}</view>
<!-- 内外层循环key值可以相同,对应不同循环项的属性名,不冲突 -->
<view wx:for={{students}} wx:key="id" wx:for-item="class">
{{ class.class }}
<!-- 上面的id,是对应class的id;下面的id,是对应item的id -->
<view wx:for={{item.members}} wx:key="id">{{item.name}}</view>
</view>
image图片的两种场景:
环境准备
微信开发者工具
线上代码
搜索乐车邦熟悉线上现有流程
本地运行
新框架demo