| <template> | 
|     <!-- #ifdef APP-NVUE --> | 
|     <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text> | 
|     <!-- #endif --> | 
|     <!-- #ifndef APP-NVUE --> | 
|     <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text> | 
|     <!-- #endif -->  | 
| </template>  | 
|   | 
| <script>  | 
|     import icons from './icons.js'; | 
|     const getVal = (val) => { | 
|         const reg = /^[0-9]*$/g | 
|         return (typeof val === 'number' || reg.test(val) )? val + 'px' : val; | 
|     }   | 
|     // #ifdef APP-NVUE  | 
|     var domModule = weex.requireModule('dom');  | 
|     import iconUrl from './uniicons.ttf'  | 
|     domModule.addRule('fontFace', {  | 
|         'fontFamily': "uniicons",  | 
|         'src': "url('"+iconUrl+"')"  | 
|     });  | 
|     // #endif  | 
|   | 
|     /**  | 
|      * Icons 图标  | 
|      * @description 用于展示 icons 图标  | 
|      * @tutorial https://ext.dcloud.net.cn/plugin?id=28  | 
|      * @property {Number} size 图标大小  | 
|      * @property {String} type 图标图案,参考示例  | 
|      * @property {String} color 图标颜色 | 
|      * @property {String} customPrefix 自定义图标 | 
|      * @event {Function} click 点击 Icon 触发事件  | 
|      */  | 
|     export default {  | 
|         name: 'UniIcons',  | 
|         emits:['click'],  | 
|         props: {  | 
|             type: {  | 
|                 type: String,  | 
|                 default: ''  | 
|             },  | 
|             color: {  | 
|                 type: String,  | 
|                 default: '#333333'  | 
|             },  | 
|             size: {  | 
|                 type: [Number, String],  | 
|                 default: 16  | 
|             }, | 
|             customPrefix:{ | 
|                 type: String, | 
|                 default: '' | 
|             }  | 
|         },  | 
|         data() {  | 
|             return {  | 
|                 icons: icons.glyphs  | 
|             }  | 
|         }, | 
|         computed:{ | 
|             unicode(){ | 
|                 let code = this.icons.find(v=>v.font_class === this.type) | 
|                 if(code){ | 
|                     return unescape(`%u${code.unicode}`) | 
|                 } | 
|                 return '' | 
|             }, | 
|             iconSize(){ | 
|                 return getVal(this.size) | 
|             } | 
|         },  | 
|         methods: {  | 
|             _onClick() {  | 
|                 this.$emit('click')  | 
|             }  | 
|         }  | 
|     }  | 
| </script>  | 
|   | 
| <style lang="scss"> | 
|     /* #ifndef APP-NVUE */ | 
|     @import './uniicons.css';  | 
|     @font-face {  | 
|         font-family: uniicons;  | 
|         src: url('./uniicons.ttf') format('truetype');  | 
|     }  | 
|   | 
|     /* #endif */ | 
|     .uni-icons {  | 
|         font-family: uniicons;  | 
|         text-decoration: none;  | 
|         text-align: center;  | 
|     }  | 
|   | 
| </style> |