2012-04-08 17 views
5

Kartlarda gördüğüm tüm sorular gerçekten bir soruma cevap vermiyor. Bu yüzden uzmanlara buradan soracağım. İlk önce, okumaya çok teşekkür ederim. Stackoverflow'un neyle ilgili olduğunu gerçekten takdir ediyorum, umarım bir üye olduğuma şimdi katkıda bulunabilirim.jQuery'den her döngüden JSON oluşturma

Bir JSON nesnesini, her bir döngüde jQuery ile başka bir JSON nesnesinden ayarlanan değişkenler temelinde dinamik olarak oluşturmak istiyorum. Benim sözümün ve muhtemelen bu şey hakkındaki bilgimin biraz kapalı olduğunu düşünüyorum.

aşağıdaki JSON yapısı ile bitirmek istiyorum:

"masaüstü" değil bu döngüde başka JSON nesnesi arasında bir değer olduğu
{ 
    desktop:{ 
    title:300, 
    rev:200 
    } 
} 

, ben hiçbir sorun, aslında olduğundan çağırabilir aslında diğer JSON nesnesinde belirttiğim isim değeri. Sütun olarak adlandırılan nesnede bir diziden geçiyorum ancak tüm genişlikleri içeren ayrı bir nesneyi ayarlamak istiyorum çünkü sütunlar itebileceğim başka bir çerçeve aracılığıyla ayarlanabilir ve erişilebilir, bu genişlikleri korumak istiyorum.

ben döngü içinden bu yapmaya çalıştığım: Ben sütunları uyarabilir

var colWidths = {}; 
$.each(columns, function(i) { 
    colWidths.desktop.title = columns[i].width; 
}); 

[i] .width başarıyla. Sahip olduğum konu, bunu yaratmak ve buna erişmek. Yaptığım her şey doğru görünüyor ama bu durum böyle değil. Belki benim veya kurulumum? Lütfen bunu nasıl kodlayacağımı gösterebilir misiniz? VEYA bu mümkün değilse bir Javascript Nesnesi oluşturabilirim. Şimdiden teşekkürler!

+0

aslında JSON metnini oluşturmak çalışıyorsun DÜZENLEME? Bana sadece bir JavaScript nesnesi oluşturuyormuşsun gibi geliyor. –

cevap

3

Stackoverflow'a Hoş Geldiniz. Elinizde herhangi bir hata mesajı yazmadınız, bu yüzden aşağıdakileri kabul ediyorum.

// prepare the object correctly first 
var colWidths = { 
    desktop: { 
     title: 0 
    } 
}; 
// then ADDING each value with += instead of = 
// (because in your code you will just have the last value) 
$.each(columns, function(i) { 
    colWidths.desktop.title += columns[i].width; 
}); 

var grid = { 
    "name": "desktop", 
    "columns": [ 
     { 
     "id": "icons", 
     "width": 50}, 
    { 
     "id": "title", 
     "width": 200}, 
    { 
     "id": "name", 
     "width": 300}, 
    { 
     "id": "revision", 
     "width": 400} 
    ] 
}; 

var columns = grid.columns; 
var gridName = grid.name; 

var colWidths = {}; 

// CHANGE HERE 
colWidths[gridName] = {}; 

$.each(columns, function(c) { 

    var col = columns[c]; 
    var colname = col.id; 
    var colwidth = col.width; 

    // CHANGE HERE 
    var thisGrid = colWidths[gridName]; 
    if(!thisGrid[colname]) thisGrid[colname] = 0; 

    thisGrid[colname] += colwidth; 

}); 

//alert(colWidths.desktop.title);​ 
document.write(JSON.stringify(colWidths)); 

// RESULT: 
// {"desktop":{"icons":50,"title":200,"name":300,"revision":400}} 
+0

Tamam Doğru şekilde ayarlamıyorum. Nesneyi hazırladığınızda "masaüstünün" dinamik olması ve "başlık" ın dinamik olması gerekir. Bu nesne zaman zaman farklı olabilir. – Paul

+0

Heres küğümü hala yanlış yapıyor olabilirim http://jsfiddle.net/LW7FJ/ – Paul

+0

Burada daha iyi bir Fiddle olsun, bazı önemsiz bilgileri kaldırdım. Gördüğünüz gibi http://jsfiddle.net/LW7FJ/6/ nesne doğru ayarlamıyor. Ben uyarı (colWidths.desktop.title) vb gibi dönmek istiyorum ... – Paul

İlgili konular