Knockout.js 带模板和foreach的KnockoutJS observableArray

Knockout.js 带模板和foreach的KnockoutJS observableArray,knockout.js,foreach,ko.observablearray,Knockout.js,Foreach,Ko.observablearray,我试图使用foreach和复选框将一个Knockout-observearray绑定到我的UI,然后根据选中的内容创建一个数组 我得到了这个错误: 未捕获引用错误:无法处理绑定“模板:函数()…” 这是我的HTML: <dl data-bind="template: { name: 'QuarterTemplate', foreach: Quarter, templateOptions: { selections: SelectedQuarters } }"></dl>

我试图使用foreach和复选框将一个Knockout-observearray绑定到我的UI,然后根据选中的内容创建一个数组

我得到了这个错误: 未捕获引用错误:无法处理绑定“模板:函数()…”

这是我的HTML:

<dl data-bind="template: { name: 'QuarterTemplate', foreach: Quarter, templateOptions: { selections: SelectedQuarters } }"></dl>

<script id="QuarterTemplate" type="text/html">
<dd>
    <label>
        <input type="checkbox" data-bind="attr: { value: quarter }, checked: $item.selections" />
        <a data-bind="text: quarter" ></a>
    </label>
</dd>
</script>
我还有一把小提琴:

最终,我希望在控制台中看到如下内容:

Q1

第一季度、第三季度

第一季度、第三季度、第二季度

第一季度、第三季度、第二季度、第四季度


Q1、Q2、Q4

templateOptions
仅在使用
jQuery模板插件时可用。使用KO本机模板时,最常见的是使用
$root
$parent
以这种方式绑定。这里有一些关于这些的文档

所以,它看起来像:

<dl data-bind="template: { name: 'QuarterTemplate', foreach: Quarter }"></dl>

<script id="QuarterTemplate" type="text/html">
    <dd>
        <label>
            <input type="checkbox" data-bind="attr: { value: quarter }, checked: $parent.SelectedQuarters" />
            <a data-bind="text: quarter" ></a>
            </label>
</dd>
</script>


谢谢。这有助于我的ObservalArray复选框正常工作。我根据您的示例修改了我的代码,并在JS“类”中提供了更多信息,您可以展示这些信息

//定义一个“Quarter”类
功能区(id、名称){
返回{
id:ko.可观察(id),
名称:ko.可观察(名称)
};
}
var viewModel={
宿舍:科伊雷([
新季度(“第一季度”、“第一季度”),
新季度(“第二季度”、“第二季度”),
新季度(“第三季度”、“第三季度”),
新季度(“第四季度”、“第四季度”),
]),
所选季度:可观察到的ko.array([“Q1”,“Q3”])
};
应用绑定(视图模型)

  • <dl data-bind="template: { name: 'QuarterTemplate', foreach: Quarter }"></dl>
    
    <script id="QuarterTemplate" type="text/html">
        <dd>
            <label>
                <input type="checkbox" data-bind="attr: { value: quarter }, checked: $parent.SelectedQuarters" />
                <a data-bind="text: quarter" ></a>
                </label>
    </dd>
    </script>