Mithril 不会自动重绘视图

Mithril doesnt auto redraw the view

当更改道具值时,秘银不会自动重绘视图,按一个按钮我更新我的道具为:

     something.vm.test(something.vm.test() + 1);

它更新了 prop 值,但没有通过使用 m.redraw() 反映在视图上,它工作正常吗?

编辑道具不会触发重绘,但按钮点击事件会触发(您应该会看到道具的变化)。

是使用onclick属性的秘银钮吗?还是非秘银点击事件? 如果您不使用秘银活动,则需要 m.redraw()

基本上,m.prop 是一个反应式数据源。 this code可能对你有帮助。

如果你想在秘银块之外工作, 用 m.startComputation()m.endComputation()

拥抱道具

像这样。

m.startComputation();
something.vm.test(something.vm.test() + 1);
m.endComputation();

它很有魅力!

注意修改 m.prop getter-setters 的值不会触发重绘,这些函数在你通过 m.mount 或 [=21 初始化组件时由 Mithril 内部调用=],以及当您触发使用 m() 在模板中创建的事件处理程序时。 所以如果你想改变var的值,你可以使用m.prop()。 看这个例子:

controller: function() {
    var list = [];
    var element = m.prop('');

function addElement() {
  list.push(element());
  element('');
}
return {
  list: list,
  value: element,
  addElement: addElement
}


    m('button',{
      onclick: ctrl.addElement
    }, 'Add')],

在这种情况下,元素是 m.prop() 并且单击按钮时值会发生变化