0

ExtJs 3.4 を使用しており、隠しフィールドを作成する次のコードがあります。

box.hidden = this.el.insertSibling({
    tag: 'input',
    type: 'hidden',
    value: itemVal,
    name: (this.hiddenName || this.name)
}, 'before');

ただし、itemValが json-string (または引用符を含む文字列) の場合、次のような要素が作成されます。

<input type="hidden" value="[" 635f7ede-7add-415f-8461-548d17027cac.group","bbe2x:101"]"="" name="selector_account_ef8e33ca71e749dca21997f51b404e23" id="ext-gen1766">

問題は、パフォーマンスのために html を連結することです。Ext.DomHelper.useDomしたがって、この場合、 trueに設定して要素を作成したいと思います。簡単に修正できるはずですよね?しかし、useDom 変数をチェックする内部コードは、using のExt.apply代わりに function に渡されるプライベート オブジェクトをチェックしExt.DomHelper.useDomます。したがって、それをチェックする関数内で Ext.DomHelper.useDom を true に設定しても問題ありません。決して true ではありません。ここで ExtJs コードを参照してください。

http://docs.sencha.com/ext-js/3-4/source/DomHelper-more.html

// private
function doInsert(el, o, returnElement, pos, sibling, append){
    el = Ext.getDom(el);
    var newNode;
    if (pub.useDom) {
       ...
    } else {
       ...
    }
    return returnElement ? Ext.get(newNode, true) : newNode;
}

これに関するクローズされた古いバグレポートを見つけました ( http://www.sencha.com/forum/showthread.php?76966-CLOSED-3.0.0-DomHelper-s-useDom-bug )が、私は知りませんuseDom を true に設定する理由と方法を理解してください。

もちろん、に置き換えて修正するのは簡単"です&quot;が、それを理解したいです。

4

0 に答える 0