현재 JQGrid를 사용하는 웹 응용 프로그램이 있지만 코드 구성을 개선하기 위해 Backbone.js를 도입하려고합니다. 내가 뭘 하려는지, 컬렉션을 사용하여 서버에서 데이터를 가져 와서 정의 된 JQGrid에 JSON 정보를 추가하지만 작동시키지 못한다.백본 : 서버에서 JQGrid로 데이터 가져 오기
var tareasHumanasTable = $("#grillaTH").jqGrid({
datatype: 'local',
height: 'auto',
colNames:[ colNames...],
colModel:[ colModel...]
}
그리고 내 모델 및 컬렉션은 다음과 같이 정의됩니다 : 내있는 jqGrid는 다음과 같이 정의된다
window.TareaHumana = Backbone.Model.extend();
window.TareaHumanaCollection = Backbone.Collection.extend({
model: TareaHumana,
url: "bandejaTareas/buscarTH"
});
내가 클릭하면 서버 통신을 시작하는 버튼이 있습니다. 이제 다음을 수행합니다.
$(function(){
$("#botonBuscar").bind('click',function(){
var tareaHumanaList = new TareaHumanaCollection();
tareaHumanaList.fetch({data: $("#formBandejaTareas").serializeObject()});
//alert("tareaHumanaList.toJSON(): " + tareaHumanaList.toJSON());
tareaHumanaList.each(function(tareaHumana, i){
//alert("tareaHumana.toJSON(): " + tareaHumana.toJSON());
tareasHumanasTable.jqGrid('addRowData', (i + 1), tareaHumana.toJSON());
});
코드가 전혀 작동하지 않습니다. Firebug를 사용하여 서버가 올바른 형식으로 데이터를 전송했음을 확인했지만 코드가 작동하지 않습니다. 가장 이상한 점은 "경고 (...)"줄의 주석을 제거 할 때 모든 것이 작동하기 시작한다는 것입니다.
jqGrid 코드를 거의 게시하지 않았으며 JSON 데이터를 테스트하지 않았습니다. 백본 자체는 사용하지 않지만 게시 한 jqGrid 사용법의 일부는 매우 비 효과적입니다. 'addRowData'는 그리드를 채우는 가장 느린 방법입니다. 당신이 그것을 전혀 채우지 않기 때문에'tareaHumana.toJSON()'의 데이터에 문제가있을 수 있습니다. 데이터는 그리드의'colModel'과 일치해야하지만, 루프에서'addRowData'를 사용하기 전에 쓴 것처럼 정말 나쁜 생각입니다. 그리드를 채우는 방법을 더 잘 설명해야합니다. 어떤 식 으로든 JSON 응답과'colModel'의 몇 가지 예가 정말로 필요합니다. – Oleg
이 문제는 JSON 구문 분석과 관련이 없으며 Backbone에서의 비동기 가져 오기와 관련이 있습니다. 그리드 모집단에서 나는이 권고를 따랐다 : http://stackoverflow.com/questions/8646622/how-to-bind-backbone-model-to-jqgrid. 다른 아이디어있어? –
'addowData'의 사용법은 매우 다양합니다. 나는 당신이 [this one] (http://jsfiddle.net/qM98D/67/)으로 언급 한 데모를 바꿀 것입니다. 그리드 *를 데이터로 생성하는 것이 중요합니다 * 그리드를 생성하고 100 행을 추가하면 페이지에 * one * 행을 삽입하거나 * one * 요소를 변경하면 * 모든 기존 요소의 위치가 나타납니다 다시 계산 *. 'gridview : true, data : mydata'를 사용하여 그리드를 생성하면 전 체 컨텐츠를 하나의 작업으로 생성 할 수 있습니다. 더 많은 행이 있으면 그 차이가 더 많이 나타날 것입니다. – Oleg