数か月前にノックアウトの仕事を始めましたが、今のところとても順調です。今日、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>
それらの唯一の違いは、name プロパティの末尾にある括弧 () です。これは観察可能なものなので、双方向バインディングを行うには括弧が必要だと思いました。しかし、それらを使用すると、テキストエリアの値を変更するたびに、すべてを削除してもビューモデルがそれに応じて更新されません。
この場合、括弧を削除する必要がある理由と、data-bind="text: I have to put them??