私は KOGrid を使用しているダッシュボードで作業しています。私の考えは、一連のウィジェットを動的に作成し、各ウィジェットのデータを kogrid にバインドすることです。問題はノックアウト バインディングにあります。DIV を動的に作成するときに myObsArray を使用しています。これをビュー モデルで使用すると、すべてのウィジェットが同じデータにバインドされます (つまり、監視可能であるため、データをオーバーライドします)。すべてのウィジェットの最後のウィジェット)。連想配列を介してこれを修正しようとする私の試みはすべて無駄です。大変お世話になりました。100 万前もって感謝します。
私は 2 つのコントローラー (MVC4) を持っています。1 つ目はウィジェット名のリストを返し、2 つ目は結果 (データテーブル) を JSON 形式で返します。JSON.Net JsonConvert を使用して結果を json 形式に変換し、JSON コンテンツの結果として渡します。1 つのウィジェットを使用する場合はすべて問題ありませんが、複数のウィジェットを使用する場合に問題が発生します。
function loadWidgets(data) {
//showLoading();
var div1 = $("#db-col-1");
var div2 = $("#db-col-2");
div1.html('');
div2.html('');
$.each(data, function (index, item) {
var li = "<li id='" + item.WIDGET_NAME + "_li'></li>";
if (index % 2 == 0)
div1.append(li);
else
div2.append(li);
$("#" + item.WIDGET_NAME + "_li")
.append("<div id= '" + item.WIDGET_NAME + "' class='example' data- bind='koGrid: { data: myObsArray }'></div>"); //,
LoadJson(item.WIDGET_NAME, item.WIDGET_NAME + "Arr" );
});
}
function LoadJson(widgetName) {
var wName = widgetName;
$.getJSON('Home/GetWidgetDetails?widgetName=' + wName,
function (data) {
window.viewModel = {
myObsArray: ko.observableArray(data) //myObsArray
};
ko.applyBindings(viewModel);
});
}
ありがとう、シャシー