我有一些非常直接的 ExtJS 5 JavaScript,当我尝试使用编码将数据输出到标签时,我得到的结果与使用 console.log 记录时不同。我想要的是来自console.log 的内容。下面是描述我的问题的带注释的图片以及显示代码的小提琴。
https://fiddle.sencha.com/#fiddle/8bo

我有一些非常直接的 ExtJS 5 JavaScript,当我尝试使用编码将数据输出到标签时,我得到的结果与使用 console.log 记录时不同。我想要的是来自console.log 的内容。下面是描述我的问题的带注释的图片以及显示代码的小提琴。
https://fiddle.sencha.com/#fiddle/8bo

请注意,我有使用 JavaScript 的经验,但我以前从未使用过 ExtJS。
现在,话虽如此,您看到的结果与控制台不同,因为该方法在Ext.JSON.encode()内部调用. 您可以通过调试器进入此方法,亲自查看这一点。.hasOwnProperty()viewModel.getData()
left-.hasOwnProperty()返回真from1-.hasOwnProperty()返回 false。由于from1返回false,返回的字符串Ext.JSON.encode()不包含该属性。
现在,问题变成了:为什么它返回 false from1?这是因为您viewModel不包括from1作为属性。它目前看起来像这样:
viewModel: {
data: {
left: 'left'
}
}
您需要添加from1到您的viewModel.
现在,我确实注意到了一件事。如果我添加from1并将其值设置为TopPanel,它仍然无法按预期工作。如果我选择了任何其他值,除了TopPanel按预期工作并且Ext.JSON.encode()包含属性输出的字符串。它与viewModel您声明的第一个配置有关。它目前看起来像这样:
viewModel: {
data: {
from1: 'TopPanel'
}
...
这两种viewModel配置以某种方式发生冲突。但在我告诉你为什么会这样之前,我必须进一步深入研究 ExtJS 是如何工作的。希望我的回答能将您推向正确的方向。