¶Ô±ÈÐÂÎļþ |
| | |
| | | module.exports = { |
| | | // å®ä¹æ¯ä¸ªç»ä»¶é½å¯è½éè¦ç¨å°çå¤é¨æ ·å¼ä»¥åç±»å |
| | | props: { |
| | | // æ¯ä¸ªç»ä»¶é½æçç¶ç»ä»¶ä¼ éçæ ·å¼ï¼å¯ä»¥ä¸ºå符串æè
å¯¹è±¡å½¢å¼ |
| | | customStyle: { |
| | | type: [Object, String], |
| | | default: () => ({}) |
| | | }, |
| | | customClass: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 跳转ç页é¢è·¯å¾ |
| | | url: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 页é¢è·³è½¬çç±»å |
| | | linkType: { |
| | | type: String, |
| | | default: 'navigateTo' |
| | | } |
| | | }, |
| | | data() { |
| | | return {} |
| | | }, |
| | | onLoad() { |
| | | // getRectæè½½å°$uä¸ï¼å ä¸ºè¿æ¹æ³éè¦ä½¿ç¨in(this)ï¼æä»¥æ æ³æå®ç¬ç«æä¸ä¸ªåç¬çæä»¶å¯¼åº |
| | | this.$u.getRect = this.$uGetRect |
| | | }, |
| | | created() { |
| | | // ç»ä»¶å½ä¸ï¼åªæcreated声æå¨æï¼ä¸ºäºè½å¨ç»ä»¶ä½¿ç¨ï¼æ
ä¹å¨createdä¸å°æ¹æ³æè½½å°$u |
| | | this.$u.getRect = this.$uGetRect |
| | | }, |
| | | computed: { |
| | | // å¨2.xçæ¬ä¸ï¼å°ä¼æ$uæè½½å°uni对象ä¸ï¼å¯¼è´å¨æ¨¡æ¿ä¸æ æ³ä½¿ç¨uni.$u.xxxå½¢å¼ |
| | | // æä»¥è¿ééè¿computed计ç®å±æ§å°å
¶éå å°this.$uä¸ï¼å°±å¯ä»¥å¨æ¨¡æ¿æè
jsä¸ä½¿ç¨uni.$u.xxx |
| | | // åªå¨nvueç¯å¢éè¿æ¤æ¹å¼å¼å
¥å®æ´ç$uï¼å
¶ä»å¹³å°ä¼åºç°æ§è½é®é¢ï¼énvueåæéå¼å
¥ï¼ä¸»è¦åå æ¯propsè¿å¤§ï¼ |
| | | $u() { |
| | | // #ifndef APP-NVUE |
| | | // å¨énvue端ï¼ç§»é¤propsï¼httpï¼mixinç对象ï¼é¿å
å¨å°ç¨åºsetDataæ¶æ°æ®è¿å¤§å½±åæ§è½ |
| | | return uni.$u.deepMerge(uni.$u, { |
| | | props: undefined, |
| | | http: undefined, |
| | | mixin: undefined |
| | | }) |
| | | // #endif |
| | | // #ifdef APP-NVUE |
| | | return uni.$u |
| | | // #endif |
| | | }, |
| | | /** |
| | | * çæbemè§åç±»å |
| | | * ç±äºå¾®ä¿¡å°ç¨åºï¼H5ï¼nvueä¹é´ç»å®classçå·®å¼ï¼æ æ³éè¿:class="[bem()]"çå½¢å¼è¿è¡åç¨ |
| | | * æ
éç¨å¦ä¸æä¸åæ³ï¼æåè¿åçæ¯æ°ç»ï¼ä¸è¬å¹³å°ï¼æåç¬¦ä¸²ï¼æ¯ä»å®ååèè·³å¨å¹³å°ï¼ï¼ç±»ä¼¼['a', 'b', 'c']æ'a b c'çå½¢å¼ |
| | | * @param {String} name ç»ä»¶åç§° |
| | | * @param {Array} fixed ä¸ç´ä¼åå¨çç±»å |
| | | * @param {Array} change 伿 ¹æ®åéå¼ä¸ºtrueæè
falseèåºç°æè
éèçç±»å |
| | | * @returns {Array|string} |
| | | */ |
| | | bem() { |
| | | return function (name, fixed, change) { |
| | | // ç±»ååç¼ |
| | | const prefix = `u-${name}--` |
| | | const classes = {} |
| | | if (fixed) { |
| | | fixed.map((item) => { |
| | | // è¿éçç±»åï¼ä¼ä¸ç´åå¨ |
| | | classes[prefix + this[item]] = true |
| | | }) |
| | | } |
| | | if (change) { |
| | | change.map((item) => { |
| | | // è¿éçç±»åï¼ä¼æ ¹æ®this[item]çå¼ä¸ºtrueæè
falseï¼èè¿è¡æ·»å æè
ç§»é¤æä¸ä¸ªç±» |
| | | this[item] ? (classes[prefix + item] = this[item]) : (delete classes[prefix + item]) |
| | | }) |
| | | } |
| | | return Object.keys(classes) |
| | | // æ¯ä»å®ï¼å¤´æ¡å°ç¨åºæ æ³å¨æç»å®ä¸ä¸ªæ°ç»ç±»åï¼å¦åè§£æåºæ¥çç»æä¼å¸¦æ","ï¼è导è´å¤±æ |
| | | // #ifdef MP-ALIPAY || MP-TOUTIAO || MP-LARK |
| | | .join(' ') |
| | | // #endif |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | // 跳转æä¸ä¸ªé¡µé¢ |
| | | openPage(urlKey = 'url') { |
| | | const url = this[urlKey] |
| | | if (url) { |
| | | // æ§è¡ç±»ä¼¼uni.navigateToçæ¹æ³ |
| | | uni[this.linkType]({ |
| | | url |
| | | }) |
| | | } |
| | | }, |
| | | // æ¥è¯¢èç¹ä¿¡æ¯ |
| | | // ç®åæ¤æ¹æ³å¨æ¯ä»å®å°ç¨åºä¸æ æ³è·åç»ä»¶è·æ¥ç¹ç尺寸ï¼ä¸ºæ¯ä»å®çbug(2020-07-21) |
| | | // è§£å³åæ³ä¸ºå¨ç»ä»¶æ ¹é¨åå¥ä¸ä¸ªæ²¡æä»»ä½ä½ç¨çviewå
ç´ |
| | | $uGetRect(selector, all) { |
| | | return new Promise((resolve) => { |
| | | uni.createSelectorQuery() |
| | | .in(this)[all ? 'selectAll' : 'select'](selector) |
| | | .boundingClientRect((rect) => { |
| | | if (all && Array.isArray(rect) && rect.length) { |
| | | resolve(rect) |
| | | } |
| | | if (!all && rect) { |
| | | resolve(rect) |
| | | } |
| | | }) |
| | | .exec() |
| | | }) |
| | | }, |
| | | getParentData(parentName = '') { |
| | | // é¿å
å¨createdä¸å»å®ä¹parentåé |
| | | if (!this.parent) this.parent = {} |
| | | // è¿éçæ¬è´¨åçæ¯ï¼éè¿è·åç¶ç»ä»¶å®ä¾(ä¹å³ç±»ä¼¼u-radioçç¶ç»ä»¶u-radio-groupçthis) |
| | | // å°ç¶ç»ä»¶thisä¸å¯¹åºçåæ°ï¼èµå¼ç»æ¬ç»ä»¶(u-radioçthis)çparentData对象ä¸å¯¹åºç屿§ |
| | | // 乿以éè¦è¿ä¹åï¼æ¯å 为ææç«¯ä¸ï¼å¤´æ¡å°ç¨åºä¸æ¯æéè¿this.parent.xxxå»çå¬ç¶ç»ä»¶åæ°çåå |
| | | // æ¤å¤å¹¶ä¸ä¼èªå¨æ´æ°åç»ä»¶çæ°æ®ï¼èæ¯ä¾èµç¶ç»ä»¶u-radio-groupå»çå¬dataçååï¼æå¨è°ç¨æ´æ°åç»ä»¶çæ¹æ³å»éæ°è·å |
| | | this.parent = uni.$u.$parent.call(this, parentName) |
| | | if (this.parent.children) { |
| | | // 妿ç¶ç»ä»¶çchildrenä¸å卿¬ç»ä»¶çå®ä¾ï¼æå°æ¬å®ä¾æ·»å å°ç¶ç»ä»¶çchildrenä¸ |
| | | this.parent.children.indexOf(this) === -1 && this.parent.children.push(this) |
| | | } |
| | | if (this.parent && this.parentData) { |
| | | // åéparentDataä¸ç屿§ï¼å°parentä¸çåå屿§èµå¼ç»parentData |
| | | Object.keys(this.parentData).map((key) => { |
| | | this.parentData[key] = this.parent[key] |
| | | }) |
| | | } |
| | | }, |
| | | // 黿¢äºä»¶å泡 |
| | | preventEvent(e) { |
| | | e && typeof (e.stopPropagation) === 'function' && e.stopPropagation() |
| | | }, |
| | | // 空æä½ |
| | | noop(e) { |
| | | this.preventEvent(e) |
| | | } |
| | | }, |
| | | onReachBottom() { |
| | | uni.$emit('uOnReachBottom') |
| | | }, |
| | | beforeDestroy() { |
| | | // 夿å½å页颿¯å¦åå¨parentåchldrenï¼ä¸è¬å¨checkboxåcheckbox-groupç¶åèå¨çåºæ¯ä¼ææ¤æ
åµ |
| | | // ç»ä»¶éæ¯æ¶ï¼ç§»é¤åç»ä»¶å¨ç¶ç»ä»¶childrenæ°ç»ä¸çå®ä¾ï¼éæ¾èµæºï¼é¿å
æ°æ®æ··ä¹± |
| | | if (this.parent && uni.$u.test.array(this.parent.children)) { |
| | | // ç»ä»¶éæ¯æ¶ï¼ç§»é¤ç¶ç»ä»¶ä¸çchildrenæ°ç»ä¸å¯¹åºçå®ä¾ |
| | | const childrenList = this.parent.children |
| | | childrenList.map((child, index) => { |
| | | // 妿ç¸çï¼åç§»é¤ |
| | | if (child === this) { |
| | | childrenList.splice(index, 1) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |