コンポーネントのライフサイクルに関するkoのコンポーネントのドキュメントによると:
コンポーネント バインディングの名前の値が明らかに変化する場合、または囲んでいる制御フロー バインディングによってコンテナー要素が削除される場合、コンテナー要素が DOM から削除される直前にビューモデルの破棄関数が呼び出されます。
コンポーネントがこの fiddleで破棄されている理由がわかりません。
<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);
私のフィドルで発生しているドキュメントに上記のポイントが見当たりません。私は確かに a が変化するcomponent
ことdisposed
を期待していません。re-instantiated
params
なぜこれが起こっているのですか?