-1

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

https://fiddle.sencha.com/#fiddle/8bo

在此处输入图像描述

4

1 回答 1

1

请注意,我有使用 JavaScript 的经验,但我以前从未使用过 ExtJS。

现在,话虽如此,您看到的结果与控制台不同,因为该方法在Ext.JSON.encode()内部调用. 您可以通过调试器进入此方法,亲自查看这一点。.hasOwnProperty()viewModel.getData()

  • For 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 是如何工作的。希望我的回答能将您推向正确的方向。

于 2014-08-01T16:55:25.943 回答