Javascript 使用foreach删除渲染复选框
这是我第一次参加Javascript 使用foreach删除渲染复选框,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,这是我第一次参加淘汰赛。我找不到如何使用foreach呈现复选框列表 我尝试的是: <div class="col-sm-12" data-bind="foreach: placeCategories"> <label class="col-sm-6" data-bind="text: name"> <input type="checkbox" data-bind="value: val"> </label> &l
淘汰赛
。我找不到如何使用foreach
呈现复选框列表
我尝试的是:
<div class="col-sm-12" data-bind="foreach: placeCategories">
<label class="col-sm-6" data-bind="text: name">
<input type="checkbox" data-bind="value: val">
</label>
</div>
但我只知道名字,没有复选框。标签内部html可能被覆盖。但是如何同时显示复选框和文本?来自:
text
绑定使用参数值将内容设置为文本节点。以前的任何内容都将被覆盖
因此,您需要在不同的元素上使用文本
绑定,例如在span
<div class="col-sm-12" data-bind="foreach: placeCategories">
<label class="col-sm-6">
<span data-bind="text: name"></span>
<input type="checkbox" data-bind="value: val">
</label>
</div>
也可以使用无容器语法:
<div class="col-sm-12" data-bind="foreach: placeCategories">
<label class="col-sm-6">
<!--ko text: name--><!--/ko-->
<input type="checkbox" data-bind="value: val">
</label>
</div>
是的,您需要使用ko注释标记或多个子元素(例如span),以避免绑定相互覆盖 为了好玩,您可以覆盖Knockout
文本
绑定以允许这种行为。下面的代码将测试元素的数据绑定
属性的内容,如果找到任何属性,则在保持其他绑定的同时,在元素的开头插入文本节点
var-app={
地点类别:[
{name:ko.observable('A'),val:ko.observable(false)},
{name:ko.observable('B'),val:ko.observable(false)},
{name:ko.observable('C'),val:ko.observable(false)}
]
};
ko.bindingHandlers.text.update=函数(元素,valueAccessor){
var hasBindings=element.innerHTML.match('data-bind'),
value=ko.utils.unwrapobbservable(valueAccessor());
if(hasBindings){
if(element.firstChild.nodeType!==3)
element.insertBefore(document.createTextNode(“”),element.firstChild);
element.firstChild.nodeValue=值;
}否则
element.nodeValue=值;
};
ko.应用绑定(app)代码>
感谢您对ko comment的帮助。很高兴知道我可以覆盖绑定,但这对于我的特殊任务来说太复杂了。@Edgar,NP我知道,这只是我想调查的一个好奇:)