Javascript Mithril.js m.withAttr:将事件传递给另一个函数
我正在浏览,在理解Javascript Mithril.js m.withAttr:将事件传递给另一个函数,javascript,mithril.js,Javascript,Mithril.js,我正在浏览,在理解m.withAttr时遇到困难。该辅助线在视图图层中具有以下行: m(“input[type=checkbox]”,{onclick:m.withAttr(“checked”,task.done),checked:task.done()}) 我有两个问题 1) 我理解上半部分,onclick:m.withAttr(“checked”,task.done)基本上意味着: '使用m.prop将task.done设置为“checked”属性的值'。但是下半部分的目的是什么,选中:ta
m.withAttr
时遇到困难。该辅助线在视图图层中具有以下行:
m(“input[type=checkbox]”,{onclick:m.withAttr(“checked”,task.done),checked:task.done()})
我有两个问题
1) 我理解上半部分,onclick:m.withAttr(“checked”,task.done)
基本上意味着:
'使用m.prop将task.done设置为“checked”属性的值'。但是下半部分的目的是什么,选中:task.done()?看起来它只是在重复上半场
2) 在阅读本教程时,我想添加将TODO持久化到持久化层的功能。我创建了一个save函数,以便可以将上面引用的行重构为如下内容:
m(“输入[type=checkbox]”,{onclick:todo.vm.markAsDone.bind(todo.vm,task)})
在我的视图模型中,我具有以下功能:
vm.markAsDone = function(todo) {
m.withAttr("checked", todo.done), checked: todo.done();
todo.save();
};
但这并没有起作用;我得到一个未捕获的语法错误:意外标记:
错误。我认为问题在于事件没有正确绑定到markAsDone
函数,因此它不理解的“checked”
属性;但我不确定如何解决这个问题(如果这是问题的话)
谢谢您的帮助。问题1
m()
函数的第二个参数定义HTML元素的属性,在这种情况下,
将被修饰。(特殊字段除外)
确定是否选中输入复选框,因此需要显示任务的状态李>checked
是将修改状态的事件处理程序onclick
markAsDone
传递了一个todo
模型,因此您不必在那里执行任何m.withAttr
调用。只需修改模型,然后让Mithril重新绘制视图。如果通过类似于onclick
的事件调用markAsDone
,则会自动进行重画
如果您想了解有关重画过程的更多信息,我将在一篇文章中对其进行总结
编辑:markAsDone
可能如下所示:
vm.markAsDone = function(todo) {
todo.done(true);
todo.save();
};