[英]Why is component being disposed in params change?
如果組件綁定的名稱值發生明顯變化,或者封閉的控制流綁定導致容器元素被刪除,則在將容器元素從DOM中刪除之前,將調用viewmodel上的所有dispose函數。
我不確定為什么將我的組件放在這把小提琴上 。
<div data-bind='component: { name: "some-component", params: foo }'>
<p data-bind="text: name"></p>
</div>
function ComponentViewModel(params) {
}
ComponentViewModel.prototype.dispose = function() {
console.log('disposing...');
};
ko.components.register('some-component', {
viewModel: ComponentViewModel,
template : '<div></div>'
});
var rootvm = {
foo : ko.observable('1')
};
ko.applyBindings(rootvm);
setTimeout(function() {
rootvm.foo('2'); // this is disposing ComponentViewModel, why ??
}, 3000);
我的小提琴文件中看不到上述任何要點。 如果注入的params
發生變化,我當然不希望component
被disposed
並re-instantiated
。
任何想法為什么會這樣?
您以錯誤的方式傳遞組件參數:KnockoutJs需要一個具有鍵和值的對象,您正在傳遞一個可觀察的對象。 我沒有深入研究為什么最終觸發處置的細節,但是如果您按預期傳遞對象,則不再調用dispose函數。
<div data-bind='component: { name: "some-component", params: {foo: foo} }'>
<p data-bind="text: name"></p>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.