私たちはmvc5でknockout.jsを使用しています。 ビューは、主に3つのdiv要素が含まれ、それらのそれぞれが別々のpartialViewが含まれ、それはサーバ側でHtml.Partial機能によってロードされHtml.Partialを含む要素にForeach Knockoutを使用する方法
<div id="wrapper">
<div data-bind="css:{enabled:MyArray()[0].enable}">
<label data-bind="text:MyArray()[0].title"></label>
@Html.Partial(VirtualPathUtility.ToAbsolute("~/Areas/SelectionBar/Views/SelectionBar/SelectDivision.cshtml"))
</div>
<div data-bind="css:{enabled:MyArray()[1].enable}">
<label data-bind="text:MyArray()[1].title"></label>
@Html.Partial(VirtualPathUtility.ToAbsolute("~/Areas/SelectionBar/Views/SelectionBar/SelectSM.cshtml"))
</div>
<div data-bind="css:{enabled:MyArray()[2].enable}">
<label data-bind="text:MyArray()[2].title"></label>
@Html.Partial(VirtualPathUtility.ToAbsolute("~/Areas/SelectionBar/Views/SelectionBar/SelectSM.cshtml"))
</div>
</div>
ViewModelには、次のようになります。
function getArray(){
var myObj1 = { "name": "menu1", "title": "Select SM", "enable": true };
var myObj2 = { "name": "menu2", "title": "Select Division", "enable": true };
var myObj3 = { "name": "menu3", "title": "Search", "enable": false };
return [myObj1, myObj2, myObj3];
}
function SelectBarViweModel(){
var self = this;
self.MyArray = ko.observableArray(getArray());
self.IsSingleMode = ko.observable(true);
}
コードの多くは繰り返しているので、KnockoutのForeachをMyArrayに使いたいと思っていました。そうすれば、Divを一度書くだけで済むので、配列のインデックスを指定する必要はありません(MyArray()[0]またはMyArray()[1]( )それぞれのDivsに表示され、サーバー側にロードされる@ Html.Partial 各要素に@Html.Partialのレンダリングをサポートしながら、Foreachを使用して再利用可能なコードを書く方法は?
は、私はあなたがデータをRENする場所の周りの決断をする必要があると思いますクライアントまたはサーバー。クライアントとサーバーが互いに認識し合うようにしようとすると、保守が非常に難しい多くのコードが必要になります。 –