Javascript 在清理和重新应用与子viewModels的绑定时复制元素
我有一个viewModel,其中包含ObservalArray中的子viewModels,它使用foreach绑定绑定到一些标记 在页面生命周期的后期,我需要删除旧的viewModel并在其位置应用新的viewModel。为此,我调用ko.cleanNode(),然后使用新的视图模型调用applyBindings 出于某种原因,当发生这种情况时,所有子视图模型最终都会得到重复的标记,即使父ObservalArray中的viewModels数量正确 我确信我只是错误地使用了一些击倒功能,但我不知道如何让它工作 问题在此处重复: 标记:Javascript 在清理和重新应用与子viewModels的绑定时复制元素,javascript,knockout.js,Javascript,Knockout.js,我有一个viewModel,其中包含ObservalArray中的子viewModels,它使用foreach绑定绑定到一些标记 在页面生命周期的后期,我需要删除旧的viewModel并在其位置应用新的viewModel。为此,我调用ko.cleanNode(),然后使用新的视图模型调用applyBindings 出于某种原因,当发生这种情况时,所有子视图模型最终都会得到重复的标记,即使父ObservalArray中的viewModels数量正确 我确信我只是错误地使用了一些击倒功能,但我不知道
<div class="container">
<label>RANGES</label>
<div class="rangeContainer" data-bind="foreach: ranges">
<div class="range">
<span>START <br /><span data-bind="text: start"></span></span>
<span>END <br /><span data-bind="text: end"></span></span>
</div>
</div>
</div>
使用带有绑定的
,以交换视图模型cleanNode
是一种未记录的方法
<div class="container" data-bind="with: viewModel">
...
</div>
...
使用带有
绑定的,以交换视图模型cleanNode
是一种未记录的方法
<div class="container" data-bind="with: viewModel">
...
</div>
...
在页面生命周期的后期,我需要删除旧的viewModel和
在其位置上应用一个新的
替换视图模型的更好方法是使视图模型本身成为可观察的:
var vm = ko.observable(new ParentViewModel(
{
Ranges: [{
Start: '/Date(1439438400000)/',
End: '/Date(1439611200000)/'
},
{
Start: '/Date(1439265600000)/',
End: '/Date(1439352000000)/'
}]
}));
ko.applyBindings(vm);
然后,当您要替换它时:
vm(new ParentViewModel({
Ranges: [{
Start: '/Date(1439438400000)/',
End: '/Date(1435611200000)/'
}]
}));
看
在页面生命周期的后期,我需要删除旧的viewModel和
在其位置上应用一个新的
替换视图模型的更好方法是使视图模型本身成为可观察的:
var vm = ko.observable(new ParentViewModel(
{
Ranges: [{
Start: '/Date(1439438400000)/',
End: '/Date(1439611200000)/'
},
{
Start: '/Date(1439265600000)/',
End: '/Date(1439352000000)/'
}]
}));
ko.applyBindings(vm);
然后,当您要替换它时:
vm(new ParentViewModel({
Ranges: [{
Start: '/Date(1439438400000)/',
End: '/Date(1435611200000)/'
}]
}));
请参见为什么要使用cleanNode
?您可能打算将if
或与
绑定一起使用。为什么要使用cleanNode
?您可能打算将if
或与
绑定一起使用。太棒了,太棒了。