微信小程序顯示 html wepy + wxParse

本問出自:

http://blog.csdn.net/wyk304443164

修改自:

http://www.wxappclub.com/topic/961

本着不重複造輪子的基礎上我找到了上面這篇。發現它不能正常運行,也就是顯示的是空白的。於是我修改了一點。如果你已經集成了上面那個源碼,那麼你” 可能 ” 只需要修改

wxParse.js(wxParse內源碼)

/**
 * 主函數入口區
 **/
function wxParse(bindName = 'wxParseData', type='html', data='<div class="color:red;">數據不能爲空</div>', target,imagePadding) {

...

//新增
  bindData.wxParseImgLoad = wxParseImgLoad;
  bindData.wxParseImgTap = wxParseImgTap;
  return bindData;
}

htmlParser.wpy

htmlParse () {
      /**
       * WxParse.wxParse(bindName , type, data, target,imagePadding)
       * 1.bindName綁定的數據名(必填)
       * 2.type可以爲html或者md(必填)
       * 3.data爲傳入的具體數據(必填)
       * 4.target爲Page對象,一般爲this(必填)
       * 5.imagePadding爲當圖片自適應是左右的單一padding(默認爲0,可選)
       */
      try {
        let htmlContent = WxParse.wxParse(this.parserName, this.parserType, this.parserContent || this.props.parserContent.default, this, this.parserPadding)
//        this.htmlParserTpl = this[this.parserName];
        this.htmlParserTpl = htmlContent[this.parserName]
        this.$apply()
      } catch (e) {
        console.warn('kinerHtmlParser:', '沒有任何內容需要轉換', e)
      }
    }

道理很簡單,傳過去的this,在最下面賦值的時候是:

var bindData = {};
  bindData[bindName] = transData;
  that.setData(bindData)
  that.wxParseImgLoad = wxParseImgLoad;
  that.wxParseImgTap = wxParseImgTap;
//原因可能是:這邊的that.setData不和 wepy 的 this.xxx=xxx; this.$apply(); 一樣

2017/10/27更新,修改了圖片點擊報錯:

bindData 保存在了htmlParser.wpy下
將wxParseImgTap exports出來

整個源碼參考

github下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章