체크 박스의 값을 저장할 필요가 없기 때문에 체크 박스의 값은 매번 지워집니다. 아래의 바이올린이 당신의 문제를 해결합니까? , 당신은 완전히 모든 타이머 업데이트에 뷰 모델의 모든 데이터를 교체하여 바이올린보고에서
<table>
<thead>
<th class="checkbox_th"/>
<th class="name_th" align="left">Sample</th>
<th class="status_th" align="left">Status</th>
</thead>
<tbody data-bind="template: {name: 'sampleRowTemplate', foreach: samples}"></tbody>
<script type="text/x-jquery-tmpl" id="sampleRowTemplate">
<tr>
<td><input type="checkbox" name="select_sample" data-bind="checked: is_checked"/></td>
<td><span data-bind='text: sample_name'/> The checkbox =<span data-bind="text:is_checked"/></td>
<td><span data-bind='text: ""'/><td/>
</tr>
{{each sample_runs()}}
<tr>
<td/>
<td><span data-bind='text: $value.name'/></td>
<td><span data-bind='text: $value.status'/></td>
</tr>
{{/each}}
<!--
<script type="text/x-jquery-tmpl" id="sampleRunTemplate">
<td/>
<td>${name}</td>
<td>${status}</td>
</script>
<tr data-bind="template: {name: 'sampleRunTemplate', foreach: sample_runs }"></tr>
-->
</script>
</table>
var mapping = {
'samples': {
key: function(item) {
return ko.utils.unwrapObservable(item.id);
},
'sample_runs': {
key: function(item) {
return ko.utils.unwrapObservable(item.id);
}
}
}
};
var data = {};
data.samples = [{
id: "s1",
sample_name: "AR008",
is_checked: false,
sample_runs: [
{
id: "rs1",
name: "run1",
status: "done"}]}];
var viewModel = ko.mapping.fromJS(data, mapping);
ko.applyBindings(viewModel);
// update the data every 2 seconds
var i = 0;
setInterval(function() {
var data = {};
data.samples = [{
id: "s1",
sample_name: "AR008" + i,
sample_runs: [
{
id: "rs1",
name: "run" + i,
status: "done" + i}]}];
// is this right? updateFromJS is deprecated
viewModel = ko.mapping.fromJS(data, viewModel);
i++;
}, 2000);
http://jsfiddle.net/unklefolk/RYqTT/
. 당신이하고 싶은 것이 이것입니까? –예 - 서버에서 데이터 세트를 업데이트하기 위해 폴링을 수행 할 때 수행하는 작업입니다. 모든 것을 가져 와서 KO + 매핑이 무엇이 바뀌 었는지 알아 내도록하십시오. – LogicMan