这可能不是Mithril特定的问题,但VM DOM通常会出现差异。在“重绘”页面并附加新事件处理程序,删除事件处理程序或更改与事件(如“onclick”)相关联的事件处理程序时,似乎VM DOM差异不会检测到更改,我必须明确强制重新渲染“真正的”DOM。
是否有良好的模式来处理这些情况。
答案 0 :(得分:1)
具体而言,在Mithril中,onclick
和所有on
处理程序在处理程序函数完成后自动触发重绘。但是,如果您的onclick处理程序执行真正的DOM操作(第三方库,如jQuery或动画套件),则需要使用config
属性:
http://lhorie.github.io/mithril/mithril.html#the-config-attribute
在页面呈现后调用。
关于更改事件处理程序,它取决于您在渲染周期中何时进行更改。我必须看一些代码。如果它不太不方便,手动调用重绘并不是一件坏事。如果重绘策略是“差异”,则不会支付罚金。
最后,如果您要介绍自己的事件,请考虑在事件处理程序中使用m.startComputation / m.endComputation。这些可以提供更精细的颗粒控制,并自动调用重绘。 http://lhorie.github.io/mithril/mithril.computation.html