我正在使用 KOGrid 的仪表板上工作,我的想法是动态创建一堆小部件并将数据绑定到每个小部件的 kogrid 中。问题在于淘汰绑定,我在动态创建 DIV 时使用 myObsArray,并在视图模型中使用相同的,这导致所有小部件绑定到相同的数据(即,因为它是可观察的,覆盖数据所有小部件的最后一个小部件)。我所有通过关联数组来解决这个问题的尝试都是徒劳的。非常感谢您的帮助。提前一百万谢谢。
我有两个控制器(MVC4),其中第一个返回小部件名称列表,第二个返回 JSON 格式的结果(数据表)。我正在使用 JSON.Net JsonConvert 将结果转换为 json 格式,然后作为 JSON 内容结果传递。当我使用一个小部件时一切都很好,但问题是使用多个小部件时。
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);
});
}
谢谢,沙希