1

这可能不是秘银特定的问题,但一般来说 VM DOM 不同。在“重绘”页面并附加新的事件处理程序、删除事件处理程序或更改与“onclick”等事件关联的事件处理程序时,似乎 VM DOM 差异不会检测到更改,我必须显式强制重新渲染“真实”DOM。

是否有一个很好的模式来处理这些情况。

4

1 回答 1

1

特别是在 Mithril 中,onclick所有的on-handler 在处理函数完成后会自动触发重绘。但是,如果您的 onclick 处理程序执行真正的 DOM 操作(第三方库,如 jQuery 或动画套件),您需要使用该config属性: http: //lhorie.github.io/mithril/mithril.html#the-config-attribute 在页面被渲染后被调用。

关于更改事件处理程序,这取决于您在渲染周期中何时进行更改。我得看一些代码。如果不是太不方便的话,手动调用redraw也不是什么坏事。如果重绘策略是“差异”,您将不会支付罚款。

最后,如果您要引入自己的事件,请考虑在事件处理程序中使用 m.startComputation/m.endComputation。这些提供了更精细的粒度控制,并自动调用重绘。 http://lhorie.github.io/mithril/mithril.computation.html

于 2015-08-26T17:25:44.657 回答