私は現在、Knockoutによってバインドする必要があるいくつかのUIコントロールを備えたWebアプリケーションを開発しています。構造は次のとおりです。MainPage.aspx->_manageStructures.ascx->_editStructure.ascx; これらはすべて同じページにレンダリングされ、AJAXによって新しいコンポーネントが追加されます。MainPageバインディングは完全に機能しますが、_editStructureはバインディング値を取得していないようです。私が行ったことは、アプリで必要な2つのViewModelを含むModelView.jsファイルを作成し、次にグローバルオブジェクトを返す「NameSpace」関数を作成することでした。
function v1 (name){
this.name = ko.observable(name);
}
function v2(views){
this.views = ko.observable(views);
}
function NameSpace() { }
var global = new NameSpace();
したがって、バインディングを適用する必要がある場合は、次のようにします。
var v =new V1("luis");
global.v1 = v;
ko.applyBindings(global);
次に、私のHTMLで私がしていることは次のとおりです。
<input data-bind="value: v1.name" />
さて、問題はメインページでしか動作させられないことです。
EditPageの入力にV2値をバインドしようとすると、値は常にnullになります
私の_manageStructure.ascxには、クリックしたときにWebページに_editStructureをレンダリングするアクションリンクがあります。同じページでこれを行うと機能しませんが、新しいタブで開くと完全に機能します...