| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | 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) | 
 |  |  |                 } | 
 |  |  |             }) | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |