KnockoutJS + 高级复选框功能

KnockoutJS + Advanced Checkbox Functionality

此复选框的高级之处在于它不仅是根据现有数据设置的,而且页面还必须以多种方式响应用户通过手动选中或取消选中来更改复选框。

假设您有一个 murderCaseModel,其中列出了各种 Witnesses 犯罪行为。

这里有一个 Fiddle 给你:

http://jsfiddle.net/maxgrr/j6fm7162/6/

要求如下:

已经完成

待办事项

切换复选框会导致页面上的另一个区域出现或消失

这整个问题对我来说非常棘手,确定复选框的自动值以及用户为其选择的值很难掌握。任何帮助深表感谢。这是一个很酷的功能!

您可以使用 computed 让您的 wereThereAnyWitnesses 字段更智能:

self.wereThereAnyWitnesses = ko.computed({
    read: function() {
        return self.numWitnesses() > 0;
    },
    write: function(wereThereAnyWitnesses) {
        if (!wereThereAnyWitnesses && self.numWitnesses() > 0) {
            if (!confirm("Remove all current witnesses?"))
                return self.wereThereAnyWitnesses.notifySubscribers();
            else
                self.witnesses.removeAll();
        }

        if (wereThereAnyWitnesses && self.numWitnesses() == 0)
            self.addWitness();
        }
}, this);

在你的HTML中:

<input type='checkbox' data-bind='checked: wereThereAnyWitnesses' />

Fiddle

您可以使用 jQuery。首先,确保您在 head 标签中包含 jQuery 库。只需将以下代码复制到您的 head 标签中:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

然后,使用以下代码查看复选框是否被选中:

<script type="text/javascript">
if ($('#the_checkbox').is(":checked"))
{
  $('#the_textarea').hide();
}
</script>

这里是输入:

<input type="checkbox" id="the_checkbox" />