Polymer 如何打印聚合物对象的内容(属性)?

Polymer 如何打印聚合物对象的内容(属性)?,polymer,polymer-1.0,Polymer,Polymer 1.0,我有点惊讶,我还没有找到一个解释来解释如何做到这一点,因为它似乎是调试的基本要素,但我找不到任何地方如何在Polymer中打印对象的属性 我在学习聚合物,我经常遇到这样的情况:我有一个对象,但我不知道对象的属性是什么。(例如,我打印到窗口,得到[object object]。我找到了一些关于如何打印对象的键/属性列表的说明(如果我知道这些键是什么,我知道如何打印这些键的值),但如果我还不知道数据的格式,我不知道如何获取密钥。每个示例都假定您已经知道属性是什么 我看到一些解决方案建议添加如下脚本:

我有点惊讶,我还没有找到一个解释来解释如何做到这一点,因为它似乎是调试的基本要素,但我找不到任何地方如何在Polymer中打印对象的属性

我在学习聚合物,我经常遇到这样的情况:我有一个对象,但我不知道对象的属性是什么。(例如,我打印到窗口,得到[object object]。我找到了一些关于如何打印对象的键/属性列表的说明(如果我知道这些键是什么,我知道如何打印这些键的值),但如果我还不知道数据的格式,我不知道如何获取密钥。每个示例都假定您已经知道属性是什么

我看到一些解决方案建议添加如下脚本:

getKeys : function(o){
    return Object.keys(o);
}
然后他们推荐这样的东西:

<template is="dom-repeat" items="{{ item in obj | getKeys}}">
    {{item}}
</template>

这里有一个推荐的策略。我知道我可以深入研究文档,并尝试了解应该得到什么样的响应,但我更好奇的是,对于这种情况,一般策略是什么-我多次想检查聚合物是如何建模的,而不是我认为它是如何建模的。

您提到的ost推荐了一种在post-1.0 Polymer中不再可能使用的方法,该方法不支持过滤/管道语法(从当前版本1.5.0开始)

您可以使用DevTools选择聚合元素,然后运行。这在以下浏览器(可能是较旧版本)中有效:

  • 铬50
  • 火狐45
  • Safari 9.1
  • 歌剧39
Chrome和Opera以排序的顺序显示所有键(甚至是继承自
HtmleElement
),因此在一长串键中扫描特定于聚合物的属性可能会很繁琐。然而,Firefox和Safari先列出特定于聚合物的键,然后再列出继承的键

Chrome/Opera的一个解决方法是使用以下代码段:

((o) => {
  let obj = {};
  Object.keys(o).sort().forEach((x) => {
    obj[x] = o[x];
  });
  console.dir(obj);
})($0);
这里有一个用于记录
纸张按钮的属性的对话框。您不需要单击该按钮。打开浏览器的控制台日志(而不是Codepen控制台)以查看下面的屏幕截图。您可以展开控制台日志中的字段以查看聚合物对象的属性


我一直使用的解决方案如下:

  • 在可见页面的某个位置放置一个按钮
  • 点击该按钮后,将对象打印到控制台
  • my-element.html
    <button on-tap="show">Click here to see user</button>
    ...
    show: function() {
      console.log('user', this.user);
    },
    ...
    
    单击此处查看用户
    ...
    show:function(){
    console.log('user',this.user);
    },
    ...
    
    您还可以使用
    控制台.dir()
    如下所示

    <my-element id="foo"></my-element>
    ...
    bar: function() {
      console.dir( this.$.foo );
    }
    
    
    ...
    bar:function(){
    console.dir(this.$.foo);
    }
    
    我试着运行你的代码笔,那里的控制台显示了字符串“查看浏览器的控制台日志”,但当我点击纸按钮时,没有显示任何其他内容。:-(你打开浏览器的控制台了吗?(不是代码笔中的控制台)我已经用说明更新了演示,并更新了答案以澄清。
    <my-element id="foo"></my-element>
    ...
    bar: function() {
      console.dir( this.$.foo );
    }