저는 KOGrid를 사용하는 대시 보드에서 작업하고 있습니다. 제 생각은 동적으로 여러 위젯을 만들고 각 위젯의 kogrid에 데이터를 바인딩하는 것입니다. 문제는 녹아웃 바인딩으로, 내가 동적으로 DIV를 만들 때 view 모델에서 같은 것을 사용하여 myObsArray를 사용하고 있습니다. 이것은 모든 위젯이 동일한 데이터에 바인딩되도록합니다 (예 : 관찰 가능하고 데이터를 재정의 함). 모든 위젯의 마지막 위젯). 연관 배열을 통해이 문제를 해결하려는 모든 시도는 효과가 없습니다. 당신은 크게 감사드립니다. 미리 감사드립니다.KoGrid JSON 동적 위젯
두 개의 컨트롤러 (MVC4)가 있습니다. 주먹이 위젯 이름 목록을 반환하고 두 번째 컨트롤러는 결과 (datatable)를 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);
});
}
감사합니다, 샤시
귀하의 의견에 완전히 동의하며 답변 해 주셔서 감사합니다. 코드를 다음과 같이 수정했습니다. 이제 나는 "Uncaught Error : 관찰 가능한 배열을 초기화 할 때 전달 된 인수가 배열 또는 null 또는 정의되지 않음"이어야합니다. 중첩 된 JSON이 문제를 호출합니까? 복합 객체의 배열을 처리하고 여러 격자에 바인딩하는 가장 신뢰할 수있는 방법은 무엇입니까? 업데이트 된 코드를 게시하지 않으므로 다른 qustion에 세부 정보를 요청합니다. http://stackoverflow.com/questions/11657827/kogrid-json-dynamic-widgets-with-nested-server-calls – sgireddy
내가 게시 한 피들에 복잡한 객체의 'observableArray'. 객체를 자신의 viewModel로 정의하고, JSON을 그 위에 매핑하고,'observableArray'를 객체의 배열로 채 웁니다. 나는 왜 당신이 당신의 자신의 질문을 편집하게하지 않을지 모른다. – Tyrsius
이것이이 문제의 문제를 해결 한 경우 동의하십시오. 그럴 수 없다고 생각하고 새 질문 만 사용하려면이 질문을 삭제하십시오. – Tyrsius