【发布时间】:2015-09-17 17:02:36
【问题描述】:
当更改道具值秘银不会自动重绘视图时,按下按钮我将道具更新为:
something.vm.test(something.vm.test() + 1);
它会更新道具值,但不会通过使用 m.redraw() 来反映视图,它工作正常吗?
【问题讨论】:
标签: javascript angularjs reactjs mithril.js
当更改道具值秘银不会自动重绘视图时,按下按钮我将道具更新为:
something.vm.test(something.vm.test() + 1);
它会更新道具值,但不会通过使用 m.redraw() 来反映视图,它工作正常吗?
【问题讨论】:
标签: javascript angularjs reactjs mithril.js
编辑道具不会触发重绘,但按钮点击事件应该会(并且您应该会看到道具的更改)。
它是使用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 或 m.route 初始化组件以及触发已创建的事件处理程序时,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(),当您单击按钮时值会发生变化
【讨论】: