在淘汰赛中将绑定应用于多个元素
Posted
技术标签:
【中文标题】在淘汰赛中将绑定应用于多个元素【英文标题】:Applying bindings to multiple elements in knockout 【发布时间】:2017-05-05 07:41:03 【问题描述】:我一直在使用敲除,但我遇到了这个错误“您不能多次将绑定应用于同一个元素”。我在这里阅读了一些解决方案,并尝试使用其中之一。
这是我的代码 sn-p
页面加载完成后应用绑定
$(document).ready(function()
$.each(sections, function(index0, v)
console.log("I am here");
$.each(v, function(index1, v1)
console.log("went inside the looping statement");
console.log(index1);
ko.applyBindings(new Model, document.getElementById(index1));
);
);
);
我通过它调用 id 的 JSON
var sections =
defects :
a : '',
b : '',
c : '',
;
a,b,c 是我的 html 代码中的 id。 这是 ViewModel 的代码
var Model = function()
var self = this;
self.radio = function(key,key1)
console.log(key,key1);
return;
HTML 代码
<tr class="" id="a" >
<td>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 question" >
<label class="QuestionTextProperties">Question 1 </label>
</div>
<div class="btn-group col-lg-12 col-md-12 col-sm-12 col-xs-12" data-toggle="buttons">
<label class="btn col-lg-6 col-md-6 col-sm-6 col-xs-6" > <input type="radio" name="a" data-bind="click:radio('defects','a')" class="a" value="0" id="a_No" ><i class="fa fa-circle-o "></i><i class="fa fa-check-circle-o "></i><span class="OptionsTextProperties"> No </span> </label>
<label class="btn col-lg-6 col-md-6 col-sm-6 col-xs-6" > <input type="radio" name="a" data-bind="click:radio('defects','a')" class="a" value="1" id="a_Yes" ><i class="fa fa-circle-o "></i><i class="fa fa-check-circle-o "></i><span class="OptionsTextProperties"> Yes </span> </label>
</div>
</td>
</tr>
非常感谢任何帮助。提前谢谢你。
【问题讨论】:
显示您的 html。您绑定的元素不能是彼此的孩子/父母。例如。#id1 > #id2
是不允许的,而#id1 + #id2
是。
我们确实需要查看您的 HTML 和 index1 的值。如果所有部分都是兄弟,那么您的代码应该可以正常工作,但是错误消息有点表明您有嵌套的部分。
我确实找到了解决方案,但它稍微改变了我的方法。我想我通过阅读您的 cmets 了解了我所犯的错误。我已经用 HTML 编辑了这个问题。谢谢。
【参考方案1】:
如果你能帮上忙,你真的只想在整个文档上应用一次。将您的页面视为模型的视图,然后相应地创建模型。 'applyBindings' 方法在幕后发生了很多事情,它创建了大量的观察者和订阅。
您作为示例使用的现有代码不是很清楚,因此可以制定示例解决方案,但是如果您在 Plunkr 或其他一些基于云的代码 haus 中创建问题,那么应该会有更好的建议。
【讨论】:
以上是关于在淘汰赛中将绑定应用于多个元素的主要内容,如果未能解决你的问题,请参考以下文章