如何在 mithril.js 中使用输入标签的 'value'

How to use 'value' of input tag in mithril.js

我希望能够将输入的文本值存储在变量中。我认为类似的东西会起作用:

m('input', {
    placeholder: 'Type to search...',
    oninput: () => { alert(this.value) }
})

我用alert()只是为了测试一下。每当给出输入时,它只会给出一条消息 "undefined".

好吧..我明白了。我创建了一个单独的函数并使用 DOM 找到了元素并从那里获取了值:

function boxValue() {
  alert(document.getElementById('searchBox').value);
}
m('input', {
    id: 'searchBox',
    placeholder: 'Type to search...',
    oninput: () => { boxValue() }
})

我暂时将此标记为解决方案(尽快),但如果有人提出更好的答案,我会更改已接受的答案。

箭头函数 () => {} 没有 this。为了依赖事件处理程序将 this 绑定到触发事件的元素,您必须使用:

// the traditional function form...
m('input', {
    placeholder: 'Type to search...',
    oninput: function(){ alert(this.value) }
})

// ...or the modern method shorthand:
m('input', {
    placeholder: 'Type to search...',
    oninput(){ alert(this.value) }
})

或者你可以完全避免 this(毕竟它是模棱两可的,正如我们刚刚看到的),保留箭头函数,并使用提供的事件对象作为事件处理程序的第一个参数:

m('input', {
    placeholder: 'Type to search...',
    oninput: e => { alert(e.target.value) }
})