如果它们是简单的变量更改,秘银会谈论很多关于绑定和事件的内容,但是绑定说+
功能的关键呢?我尝试m.withAttr('keyCode')
绑定到我想要处理它的控制器方法,但没有。
问问题
2058 次
3 回答
7
对于不是 DOM 元素属性的属性,Mithril 没有帮助器。withAttr
只处理 DOM 元素属性(顾名思义)。对于 keyCode,你需要定义一个自定义的 helper
function withKey(key, callback) {
return function(e) {
var ch = String.fromCharCode(e.keyCode)
if (ch == key) callback(key)
else m.redraw.strategy("none") //don't redraw (v0.1.20+ only)
}
}
m("div", {onkeypress: withKey("+", ctrl.doSomething)})
如果按下的键不是您要查找的键,则 else 语句只是为了防止重绘。
于 2014-08-19T16:52:07.507 回答
3
秘银渲染 fcnm(tag, attrs, children)
允许您config
在attrs
. 它允许您在创建 DOM 元素后调用它的方法。请参阅名为访问真实 DOM 元素的部分。
你可以很容易地滥用 Mithril,但它是附加非标准事件处理程序的正确用途。像下面这样的东西应该可以工作:
m('li', {config: setupKeyHandler}, 'foo');
function setupKeyHandler (el, isInitialized, context) {
el.addEventListener('keyup', function (event) {})
}
于 2014-07-02T13:52:18.220 回答
3
Mithril 不处理整个页面,它是给你的事件。您可以addEventListener
在window.onkeydown
该回调中执行您需要的操作,例如更新控制器或重绘页面。
http://jsbin.com/hikinoza/1/edit
m.prop
orm.withAttr
本身在任何地方都没有约束力。真正的绑定发生在您onXXX
为对象指定某些属性时,例如
m('div', {onClick: myFunc})
这会将真实onClick
事件附加到div
将要创建的真实 dom 节点。
于 2014-05-21T16:40:16.947 回答