我想将ExtJS生成的表单复制到另一个窗口(用于打印),并保留表单值。相同的程序已经适用于网格。但是当尝试将表单的DOM树复制到另一个窗口时,表单值将丢失(保留其他所有内容,只丢失字段中的值)。
所以现在我想弄清楚浏览器如何知道要在哪个字段中呈现哪个值,因为该值不会显示在标记中。
也许我变老了,但是当我开始开发时,输入字段的每个值都存储在DOM中,如下所示:
<input type="text" value="VALUE">
我已经将整个页面的DOM从浏览器控制台复制到文本编辑器中并搜索了表单值,但是它们不在那里,所以我100%肯定在formpanel之外的某处没有任何隐藏,这与正确对齐绝对定位的位置或任何东西。
那么,如果浏览器不在DOM中,浏览器如何知道要呈现什么?
答案 0 :(得分:0)
对您的问题的简短回答 - 存储在ExtJS组件(JS对象)和DOM的JS代码中的所有数据只是在需要时更新的图形表示。
例如,form(component)是一个包含所有必要信息的对象,包括不是组件基础的DOM,而只是一个图形表示。输入数据时,我们更改组件,然后在必要时更改其图形表示。因此,如果我在this fiddle中创建简单表单并设置表单项value: 'myName'
,则在此DOM中我可以找到value
的{{1}}属性
input
但如果我用
更改其值<input id="textfield-1010-inputEl" data-ref="inputEl" type="text" size="1" name="name" value="myName" role="textbox" aria-hidden="false" aria-disabled="false" aria-readonly="false" aria-invalid="false" aria-required="false" class="x-form-field x-form-text x-form-text-default " autocomplete="off" data-componentid="textfield-1010">
myFormPanel.down('[name=name]').setValue(Math.random());
的{{1}}属性不会更新,表单项组件也会更新。
P.S。如果您想确切地知道浏览器如何呈现页面内容,那么它的问题是关于浏览器引擎以及它们如何与JS,HTML等一起使用,您必须阅读文章like this。