MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mengikat respons server dinamis (json bersarang)

Pada akhirnya satu-satunya hal yang berubah adalah bagaimana Anda ingin instruksi digunakan dan diperluas. Ini sedikit berbeda dari yang sebelumnya tetapi satu hal penting adalah bahwa appendChild tidak boleh di dalam atribut instruksi loop untuk node tetapi tepat setelah di luarnya; beberapa perhatian harus diberikan pada beberapa atribut khusus juga, mungkin class bukan satu-satunya, siapa tahu :) ...coba ganti total for block inner dengan sebagai berikut :

var tag = null, a;
if ('tag' in _instr) {
    tag = document.createElement(_instr.tag);

    if ('attributes' in _instr)
        for(a in _instr.attributes) {
            a.match(/^class$/) && (a = 'className');
            tag.setAttribute(a,_instr.attributes[a]);
        }

    if ('events' in _instr)
        for(a in _instr.events)
            tag.addEventListener(a,_instr.events[a], false);

    //
    // if ('content' in _instr && _instr.content!==null)
    //  tag.innerHTML = _instr.content;
    //
    // but take care ... what if is a input[text] 

    tag[_instr.tag=='input' ? 'value' : 'innerHTML'] = ('content' in _instr && _instr.content !== null) ? _instr.content : o[k];

    if ('children' in _instr)
        for(a in _instr.children)
            _(_instr.children[a], a, tag);

    !!_n && !!tag && _n.appendChild(tag);
}

==================

DIPERBARUI

Sekarang output sekarang persis seperti yang diharapkan. Saya bahkan memperbaiki bug bodoh yang menangani class atribut. Cobalah, bahkan mungkin pada input lain, saya mencoba meletakkan teks alih-alih nol pada beberapa data dan terlihat baik-baik saja. Sampai jumpa!

function assemble (data, instr) {
    var n = document.createDocumentFragment(), i;
    function create(d) {
        return (function _(_instr, _d, _key, _n) {
            var tag = null, i;
            if ('tag' in _instr) {
                tag = document.createElement(_instr.tag);

                tag.innerHTML = 'content' in _instr && !!_instr.content ? _instr.content : typeof _d == 'string' ? _d : '';

                if ('attributes' in _instr) 
                    for (i in _instr.attributes)
                        tag.setAttribute(i, _instr.attributes[i]);

                if ('events' in _instr)
                    for(i in _instr.events)
                        tag.addEventListener(i,_instr.events[i], false);

                //recur finally
                if ('children' in _instr) {
                    for (i in _instr.children){
                        _(_instr.children[i], _d[i], i, tag);
                    }
                }
                !!_n && _n.appendChild(tag);
            }
            return tag;
        })(instr, d, null);

    }
    return (function (){
        for (i in data) {
            n.appendChild(create(data[i]));
        }
        return n;
    })();
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa menggunakan Mongoid dan ActiveRecord secara paralel di Rails 3?

  2. Bagaimana cara mengganti elemen dalam bidang array di mongodb

  3. MongoDB &Mongoose mengakses satu database sambil mengautentikasi terhadap yang lain (NodeJS, Mongoose)

  4. Bagaimana cara melihat perubahan (baris baru) di mongoDB?

  5. Lewati dan Batasi untuk pagination untuk agregat Mongo