2

私は現在、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をレンダリングするアクションリンクがあります。同じページでこれを行うと機能しませんが、新しいタブで開くと完全に機能します...

4

1 に答える 1

0

2番目のパラメーターを渡して、データバインド属性を検索するドキュメントの部分を定義できます。たとえば、ko.applyBindings(myViewModel、document.getElementById('someElementId'))です。これにより、IDがsomeElementIdの要素とその子孫にアクティブ化が制限されます。これは、複数のビューモデルがあり、それぞれをページの異なる領域に関連付ける場合に便利です。

于 2012-11-19T11:28:18.937 に答える