Weex关于字体图标的bug

查看:100
本文介绍了Weex关于字体图标的bug的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

尝试在android和iOS平台下使用字体图标:
1.装载字体图标

 created:function () {
            var domModule=weex.requireModule("dom");
            domModule.addRule('fontFace',{
                'fontFamily':'iconfont',
                'src':"url(\'http://at.alicdn.com/t/font_h973ii9uesgaatt9.ttf\')"
            })

        }

2.使用字体图标

<text :style="{fontFamily:'iconfont',color:'red',fontSize:'40px'}" >&#xe685;</text>

通过以上这种方式,直接写死unicode是可以正常渲染出来的。然而,如果将里面的字符使用变量的方式给予赋值,是无法渲染出来的。

 <text :style="{fontFamily:'iconfont',color:'red',fontSize:'40px'}" >{{fontName}}</text>

fontName:"&#xe685;"

尝试各种办法,无果,可能是底层渲染时机的问题。

解决方案

对这个问题我仔细跟踪了下,导致的原因是:
在template中 text写死 &#xe685;时,weex-template-compiler在编译阶段使用了he进行decode,而在template中Mustache进行数据绑定fontName(fontName:"&#xe685;")时不会进行decode

既然了解了原因,可以这样解决,
在vue中引入he模块,自己进行解码

<text :style="{fontFamily:'iconfont',color:'red',fontSize:'40px'}">{{getFontName}}</text>

<script>
  var he = require('he');
  module.exports = {
    data: function () {
      return {
        fontName: '&#xe685;',
      }
    },
    computed: {
      getFontName: function() {
        return he.decode(this.fontName)
      }
    }
   }
</script>

希望能帮到你

这篇关于Weex关于字体图标的bug的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆