几个月前我开始使用淘汰赛,到目前为止,这是一条非常好的道路。今天,当我在我的 html 中处理一些输入时,我遇到了一个非常无聊的问题,我花了一段时间才弄清楚。这是我的代码:
<div class="add-box" style="display:none;" id="new-user">
<textarea placeholder="Name" data-bind="value : name"></textarea>
</div>
<script>
function UserViewModel() {
var self = this;
self.name= ko.observable('');
}
$(document).ready(function () {
ko.applyBindings(new UserViewModel(), document.getElementById('new-user'));
})
</script>
这段代码工作正常,但我第一次这样做是这样的:
<textarea placeholder="Name" data-bind="value : name()"></textarea>
它们之间的唯一区别是名称属性末尾的括号 ()。由于这是一个可观察的,我认为括号是必要的,以便进行 2-way-binding。但是有了它们,每当我更改 textarea 的值时,如果我删除一切正常,viewmodel 就不会相应地更新。
你能解释一下为什么在这种情况下我必须删除括号,以及为什么在其他情况下,比如当我使用 data-bind="text: 我必须把它们放上?