ノックアウト コンポーネントを使用してページを作成しようとしていますが、複数のコンポーネントが同時に追加されていないと、1 つのページに複数のコンポーネントをバインドしようとすると問題が発生します。私が見る限り、コンポーネントのビューモデルに直接アクセスして特定の要素にバインドする方法はありません。
ko.applyBindings(viewModel, document.getElementById("component1"));
私の問題は、より一般的なものを使用する必要があるためです。
ko.applyBindings()
後で別のコンポーネントをページに追加し、それをバインドしたい場合、「バインディングを同じ要素に複数回適用することはできません」というメッセージが表示されます。エラー。
コンポーネント ビュー モデルにアクセスして直接適用する方法はありますか?
$('body').append('<div id="compoent1" data-bind=\'component: { name:"someComponent"\}'></div>')
ko.applyBindings(viewModel/*How do I get this?*/, document.getElementById("component1"));
私はちょうど使用してみました
ko.applyBindings(document.getElementById("component1"));
私の説明はおそらく理解しにくいかもしれませんが、ここに私がやろうとしていることの疑似コードがあります:
Add a knockout component
Apply bindings for the knockout component
.... some time later in my single page application
Add another knockout component
Apply bindings for the new knockout component