vant-weapp/dist/cell/index.js
2018-05-29 22:29:16 +08:00

99 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
var warn = function warn(msg, getValue) {
console.warn(msg);
};
Component({
externalClasses: ['cell-class'],
options: {
multipleSlots: true
},
relations: {
'../cell-group/index': {
type: 'parent'
}
},
properties: {
title: {
type: String,
description: '左侧标题'
},
label: {
type: String,
description: '标题下方的描述信息'
},
value: {
type: String,
description: '右侧内容'
},
onlyTapFooter: {
type: Boolean,
description: '只有点击 footer 区域才触发 tab 事件'
},
isLink: {
type: null,
value: '',
description: '是否展示右侧箭头并开启尝试以 url 跳转'
},
linkType: {
type: String,
value: 'navigateTo',
description: '链接类型,可选值为 navigateToredirectToswitchTabreLaunch'
},
url: {
type: String,
value: ''
}
},
data: {
isLastCell: true
},
methods: {
footerTap: function footerTap() {
// 如果并没有设置只点击 footer 生效那就不需要额外处理。cell 上有事件会自动处理
if (!this.data.onlyTapFooter) {
return;
}
this.triggerEvent('tap', {});
doNavigate.call(this);
},
cellTap: function cellTap() {
// 如果只点击 footer 生效,那就不需要在 cell 根节点上处理
if (this.data.onlyTapFooter) {
return;
}
this.triggerEvent('tap', {});
doNavigate.call(this);
},
// 用于被 cell-group 更新,标志是否是最后一个 cell
updateIsLastCell: function updateIsLastCell(isLastCell) {
this.setData({ isLastCell: isLastCell });
}
}
});
// 处理跳转
function doNavigate() {
var _data$url = this.data.url,
url = _data$url === undefined ? '' : _data$url;
var type = typeof this.data.isLink;
if (!this.data.isLink || !url || url === 'true' || url === 'false') return;
if (type !== 'boolean' && type !== 'string') {
warn('isLink 属性值必须是一个字符串或布尔值', this.data.isLink);
return;
}
if (['navigateTo', 'redirectTo', 'switchTab', 'reLaunch'].indexOf(this.data.linkType) === -1) {
warn('linkType 属性可选值为 navigateToredirectToswitchTabreLaunch', this.data.linkType);
return;
}
wx[this.data.linkType].call(wx, { url: url });
}