Ext.DomHelper.useDom设置为true无效

时间:2012-04-12 08:30:09

标签: javascript extjs closures extjs3

我正在使用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变量的内部代码会检查传递给Ext.apply函数而不是使用Ext.DomHelper.useDom的私有对象。因此,如果我在检查它的函数内将Ext.DomHelper.useDom设置为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;来修复它很简单,但我想了解它。

0 个答案:

没有答案