knockout.js - Bootstrap 复选框和 knockout : custom binding does not work in templates

标签 knockout.js twitter-bootstrap custom-binding

在 Twitter Bootstrap 中,带有标签的复选框使用的标记如下:

<label class="checkbox">
    <input type="checkbox" value="option1">
    Option 1
</label>

标签的 knockout 标准“文本”绑定(bind)不起作用:复选框标记简单地替换为文本。我创建了一个自定义绑定(bind):

ko.bindingHandlers['checkboxLabelText'] = {
    'update': function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        if ((value === null) || (value === undefined))
            value = "";
        $(element).html($(element).html() + " " + _.escape(value));
    }
};

它与内联模板配合得很好,

<!-- This code works -->
<div class="accordion-inner">
    <!-- ko foreach:categories -->
    <div class="control-group">
        <div class="controls">
            <label class="checkbox" data-bind="checkboxLabelText: title">
                <input type="checkbox" data-bind="checked: checked" />
            </label>
        </div>
    </div>
    <!-- /ko -->
</div>

但不适用于命名模板:出现复选框但没有绑定(bind)。

<!-- This code does not work -->
<div class="accordion-inner" data-bind="template: {foreach: categories, name: 'checkboxEditorTemplate'}">
</div>
<script type="text/html" id="checkboxEditorTemplate">
    <div class="control-group">
        <div class="controls">
            <label class="checkbox" data-bind="checkboxLabelText: title">
                <input type="checkbox" data-bind="checked: $data.checked()" />
            </label>
        </div>
    </div>
</script>

有什么帮助吗?

最佳答案

正如您所发现的,text 绑定(bind)将用指定的文本替换其内容。就您而言,我认为更好的选择是将您的标记结构如下:

<label class="checkbox">
    <input type="checkbox" value="option1">
    <span data-bind="text: title"></span>
</label>

使用这种结构,您可以避免自定义绑定(bind)并获得相同的结果。 ​​​​​​​​​​​​​​​

关于knockout.js - Bootstrap 复选框和 knockout : custom binding does not work in templates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11185689/

相关文章:

javascript - 在没有 viewModel 的情况下使用 ko.observable 数组

javascript - knockout : First Name - Last Name Joiner Not Working

javascript - 根据 id 检查 li 是否具有特定类别

html - WebKit/Blink 渲染文档不好

javascript - 无法在我的客户表单中选择一个值并将其标记为在 Silvio Moreto 的 selectpicker 中选择

javascript - Bootstrap 选择的 knockout 自定义绑定(bind)不更新 View 模型 "selectedCategories/selectedCategory"

javascript - 如何在初始 View 模型加载为空时初始化 Knockout View 模型

javascript - 链接 Knockout 自定义绑定(bind)

wcf - MTOM 编码和自定义绑定(bind)

javascript - 使用 Knockout 在下拉列表中绑定(bind)选定项