sbfkcel / towxml

微信小程序HTML、Markdown渲染库
https://github.com/sbfkcel/towxml/wiki
2.5k stars 315 forks source link

一个页面内多次解析渲染数学公式的问题 #179

Closed Ciao-yay closed 3 years ago

Ciao-yay commented 3 years ago

问题

在一个页面内多次解析渲染数学公式,页面中渲染的数学公式还是上一次渲染的结果

业务描述

页面展示数学问题,点击按钮切换题目。

showQ1

问题复现

页面展示初始题目数学公式渲染正常

showQ2

切换题目,渲染不正常

showQ3

源码

<view class="container">
  <towxml nodes="{{question}}"/>
</view>
<button bindtap="switchQ">换题目</button>
// pages/test/test.js
const app = getApp();
const fuc = require('../../utils/fuc.js')
const api = require('../../utils/api.js')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isLoading: true, // 判断是否尚在加载中
    questions: [],
    r: 0,
    question: {}
  },
  /**
   * 切换题目
   */
  switchQ: function(e) {
    var that = this;
    that.setData({
      isLoading: true
    })
    var questions = that.data.questions; //题目列表
    var newR = fuc.randomNum(0, questions.length - 1); //0~列表长度-1间生成随机数
    var question = app.towxml(questions[newR], 'markdown') //解析公式
    console.log(question)
    console.log(questions[newR])
    that.setData({
      question: question,
      isLoading: false
    })

  },
  onLoad: function() {
    const _ts = this;
    /**
     * 获取题目
     */
    fuc.request(api.getLatexSubject, {}).then(function(res) {
      var questions = [];
      for (var i = 0; i < res.data.length; i++) {
        questions.push(res.data[i].question);//题目列表
      }
      var question = app.towxml(questions[0], 'markdown')//解析初始题目
      console.log(question)
      console.log(questions[0])
      _ts.setData({
        questions: questions,
        question: question
      })
    });
  }
})
sbfkcel commented 3 years ago

先尝试清掉,再设置数据 呢?

Ciao-yay commented 3 years ago

可行!感谢!