Polymer 中继器中的自定义元素不工作

Polymer 中继器中的自定义元素不工作,polymer,polymer-2.x,Polymer,Polymer 2.x,我试图在中继器中显示一些数据,但我无法让它工作 <dom-module id="mythings-latest-values"> <template> <ul> <template is="dom-repeat" items="[[mythings]]"> <li>X <mythings-list-item item="{{item}}"><

我试图在中继器中显示一些数据,但我无法让它工作

<dom-module id="mythings-latest-values">
    <template>
        <ul>
            <template is="dom-repeat" items="[[mythings]]">
                <li>X <mythings-list-item item="{{item}}"></mythings-list-item></li>
                <li>[[item.length]] [[((item.length)-1)]] {{item[item.length-1].code}}: [[item[item.length-1].price]]</li>
            </template>
        </ul>
    </template>

    <script>
        class MythingsLatestValues extends ReduxMixin(Polymer.Element) {
            static get is() { return 'mythings-latest-values'; }
            static get properties() {
                return {
                    mythings: {
                        type: Object,
                        statePath(state) {
                            return Object.values(state.mythings);
                        }
                    },
                };
            }

            ready() {
                console.log("ready: ",this.item);
            }
        }

        window.customElements.define(MythingsLatestValues.is, MythingsLatestValues);
    </script>
</dom-module>

  • X
  • [[item.length][[((item.length)-1)]{{item[item.length-1]。代码}:[[item[item.length-1]。价格]]
MythingStatestValues类扩展了ReduxMixin(Polymer.Element){ 静态get是(){return'mythings最新值';} 静态获取属性(){ 返回{ 神话:{ 类型:对象, 状态路径(状态){ 返回Object.values(state.mythings); } }, }; } 就绪(){ console.log(“就绪:”,this.item); } } define(MythingsLatestValues.is,MythingsLatestValues);
以及:


AA
MythingListItem类扩展了Polymer.Element{
静态get是(){return'mythings列表项';}
}
define(MythingsListItem.is,MythingsListItem);
作为输出,我的列表如下所示:

  • X
  • 1[[((item.length)-1)]{{item[item.length-1]。代码}:[[item[item.length-1]。价格]]
模板中数据绑定的逻辑显然不起作用,因此我将其移动到一个单独的元素:mythings列表项。它运行。当我给它一个ready()方法和一些日志记录时,它只运行一次(而不是针对每个项目),但它根本不显示

这是怎么回事

我才刚开始使用聚合物。我完全有可能忽略了一些基本的东西,但我就是看不到

我使用的是polymer redux,对我来说也是新的,但我不知道它是如何导致这个问题的,尽管它可能是我丢失数据的原因。如果是的话,那是一个单独的问题,超出了我的问题范围。我只是想让这个模板和中继器一起工作

编辑:我找到了答案(见下文)。结果我忘了调用super.ready()我发现:我的ready()方法没有调用super.ready()。加上这一点就解决了问题

新的ready()方法:

我怀疑每个生命周期回调都需要调用super。

演示:

确保是否导入了
mythings列表项.html
redux state.html
(设置redux sture的位置)

设置属性值,如
返回状态.神话
,如果要检查数据是否来自redux,请使用
观察者

static get properties() {
    return {
        mythings: {
            type: Object,
            statePath(state) {
                return state.mythings;
            },
            observer: "_checkMythings(mythings)"
        },
    };
}

_checkMythings(mythings){
    console.log(mythings);
}

mythings
属性将如何重复?因为它是一个物体。它应该是数组。

是的,所有内容都已导入,并且来自redux的数据正在流动。我的问题是我包含了一个ready()函数,它没有调用super.ready()。未能调用super显然会破坏渲染。我在回答中添加了
Demo:Polymer-2.0-Redux
。检查代码,它将帮助您。
ready() {
    super.ready();
    console.log("ready: ",this.item);
}
static get properties() {
    return {
        mythings: {
            type: Object,
            statePath(state) {
                return state.mythings;
            },
            observer: "_checkMythings(mythings)"
        },
    };
}

_checkMythings(mythings){
    console.log(mythings);
}