重学mui

新项目需要使用mui实现,考虑到之前mui项目代码不忍直视,急需充电,故抽空重学习了一遍mui,总结了些之前忽略的知识点。

1.mui.alert()

  • mui.alert()可接收四个参数
    • 提醒内容
    • 提醒标题
    • 提醒按钮
    • 确认后执行的回调函数
  • mui.toast() 自动消失的提示弹框
    • 参数同上
  • mui.confirm()
    • 第三个参数为一个数组,可设置两个按钮的文案信息
    • 第四个参数的index属性可用来判断用户点击了取消还是确认(e.index === 1 ‘确认’)
  • mui.prompt() 带确认取消功能的输入框
    • placeholder
    • 提醒内容
    • 提醒标题
    • 提醒按钮数组
    • 回调函数(e.index,e.value)

2.单选多选获取值的思路

  • 设置相同的class,通过class获取标签元素
  • 函数封装,传入class值即可判断当前单选多选框的选择状态
// get radio value by class name
// TODO handle empty case
const getRadioRes = cn => {
	let val = ''
	(document.getElementsByClassName('cn') || []).map(v => {
		v.checked && (val = v.value)
	})
	return val
}

3.初始化

mui在mui.init()中会自动初始化控件,但动态添加的元素需要重新初始化。

mui('.mui-input-row input').input()

(1).插件初始化

mui.init()

(2).页面初始化

mui.plusReady(function () {
    
})

4.ajax拦截器

// ajax发送前钩子函数
mui.ajaxSettings.beforeSend = function (xhr, setting) {
    xhr.setRequestHeader("Authorization", token);
}

// ajax请求结果返回后处理函数
$.ajaxSettings.complete = function(xhr, status) {
	console.log('complete:::' + status);
}

5.获取mui开关组件的状态

let obj = document.getElementById('mySwitch')

if (obj.classList.contains('mui-active')) {
    // 开关打开
} else {
    // 开关关闭
}

// 开关切换状态监听
obj.addEventListener('toggle', e => {
    if (e.detail.isActive) {
    // 开关打开
} else {
    // 开关关闭
}
})

6.调用子页面

父页面中配置init方法

mui.init({
    subpages: [{
        url: 'sub.html',
        id: 'sub.html',
        style: {
            top: '45px', // 从顶部45px处开始显示子页面
            bottom: '0px' // 子页面显示到父页面底部0px
        }
    }]
})

7.打开新页面

通过href方式也可打开。


mui.openWindow({
    url: '',
    id: '',
    styles: {
        top: '',
        bottom: '',
        width: '',
        height: ''
    },
    extras: {
        // 自定义扩展参数,可用于不同页面传值
    },
    createNew: false, //
    show: {
        // 页面切换展示动画相关配置
    },
    waiting: {
        // 等待框相关配置
    }
})

8.页面间传值

注:使用extras传值必须在移动端进行,PC端模拟移动端会报错。因为plus对象只有在移动端环境才有,pc端使用会出现空指针异常。

// 父窗口传递参数
mui.openWindow({
    url: '',
    id: '',
    extras: {
        name: 'StevenLee',
        age: '22'
    }
})

//子页面接收参数
muiplusReady(function() {
    var params = plus.Webview.currentWebview;
    console.log(params.name) // StevenLee
})

9.页面预加载

概念:在用户尚未触发页面跳转时,提前创建目标页面,当页面跳转可立即进行页面切换,节省页面加载时间。

(1).mui.init方法中的preloadPages

mui.init({
    preloadPages: {
    url: '',
    id: '',
    extras: {}
})

10.事件绑定

(1) addEventListener

原声js方式绑定事件。

(2) on

mui('#lists').on('tap', 'li', () => {
    
})

(3)off 关闭事件

mui('#lists').on('tap', 'li')

(4)事件触发

mui.trigger('btn', 'tap')
mui.trigger(<dom节点>, <触发事件>, <传输的数据>)

(5)自定义事件

可用于页面间传值

  • 添加监听
window.addEventListener('newsInfo', data => {
    // ...
    console.log(data.detail.id) // nice
})
  • 触发事件 mui.fire()
    • 参数一 一个预加载对象
    • 参数二 自定义事件名称
    • 参数三 页面要传的对象值
mui.plusReady(function() {
    var detailPage = mui.preload({ // 预加载元素
        url: 'sub.html',
        id: 'sub.html'
    })
    
    mui('#lists').on('tap', 'li', () => {
        mui.fire(detailPage, 'newsInfo', {id: 'nice'})
        mui.openWindow({id: 'sub.html'}) //打开页面
    })
})

END

发布了146 篇原创文章 · 获赞 53 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/momDIY/article/details/90490489
MUI
今日推荐