Html 聚合:如何使用模板repeat解析元素的索引

Html 聚合:如何使用模板repeat解析元素的索引,html,indexing,polymer,repeat,Html,Indexing,Polymer,Repeat,我一直在尝试在我正在进行的一个项目中使用聚合物。虽然到目前为止我很享受,但我遇到了一个我无法解决的问题。 我把它归结为一个简单的例子。基本上,它只是一个包含项目元素(项目卡片)的列表元素(项目列表),我想通过属性pos将项目位置解析为元素。但是由于某些原因,项目属性始终未定义!这是因为该属性绑定到变量i,该变量在模板重复后消失吗?如果是这样,我该如何应对?我在这里应该使用不同的方法吗 解决方案:您可以通过阅读所有注释来找到解决方案,但总而言之:显然存在时间问题,并且属性在ready回调中未就绪。

我一直在尝试在我正在进行的一个项目中使用聚合物。虽然到目前为止我很享受,但我遇到了一个我无法解决的问题。 我把它归结为一个简单的例子。基本上,它只是一个包含项目元素(项目卡片)的列表元素(项目列表),我想通过属性pos将项目位置解析为元素。但是由于某些原因,项目属性始终未定义!这是因为该属性绑定到变量i,该变量在模板重复后消失吗?如果是这样,我该如何应对?我在这里应该使用不同的方法吗

解决方案:您可以通过阅读所有注释来找到解决方案,但总而言之:显然存在时间问题,并且属性在
ready
回调中未就绪。但是我发现了
domReady
回调()。使用
domReady
效果很好!感谢甘特·佐克鲍尔的帮助

这是item-list.html:

<link rel="import" href="components/polymer/polymer.html">
<link rel="import" href="item-card.html">

<polymer-element name="item-list">
  <template>
    <style>
    </style>

    <template repeat="{{values, i in data.data}}">
      <item-card pos="{{i}}"></item-card>
    </template>

  </template>
  <script>
    Polymer({
      created: function()
      {
        this.num = 123456;

        this.data = { "data":
          [
            {
              "value":999
            },
            {
              "value":666
            },
            {
              "value":555
            },
            {
              "value":222
            }
          ]
        };
      }
    });
  </script>
</polymer-element>

聚合物({
已创建:函数()
{
this.num=123456;
this.data={“data”:
[
{
“价值”:999
},
{
“价值”:666
},
{
“价值”:555
},
{
“价值”:222
}
]
};
}
});
这是item-card.html

<link rel="import" href="components/polymer/polymer.html">

<polymer-element name="item-card" attributes="pos">
  <template>
    <style>
    </style>
  </template>
  <script>
    Polymer({
      ready: function()
      {
        console.log("ready: " + this.pos);
      }
    });
  </script>
</polymer-element>

聚合物({
就绪:函数()
{
console.log(“就绪:+this.pos”);
}
});
我没有费心把index.html放进去,因为它只包含一个itemlist元素


非常感谢

我认为除了
attributes=“pos”
声明之外,您还需要
中的
pos
字段

重复元素还引用绑定模型,可以像
querySelector('item-card').templateInstance.model
property这样访问绑定模型。
有关示例,请参见

信息:
根据评论,这是一个时间问题。调用
ready
回调时,尚未分配该值,但使用
domReady
的方法已起作用。

感谢您的回复!但不幸的是,在元素中添加一个pos字段并没有带来什么不同。我不确定我是否按照您在回复时的想法使用了templateInstance。但我尝试使用商品卡中的.templateInstance.model.I访问pos。但它也没有定义。我不能理解的是,虽然我不能在脚本部分通过this.pos获取索引,但我可以在item card元素的模板部分制作一段输出索引。所以{{pos}

工作得很好!我认为
这个.templateInstance.model
也应该可以工作。您是否检查了
{{i}}
是否有值,例如在
之外添加它。是的,它有。我不知道你是否注意到了,但我也编辑了我的评论,说出于某种原因,在元素内部的正常段落中输出I很好!我不希望出现这种情况,但可能是时间问题,值尚未分配。您能否尝试将
控制台.log
链接到元素上的单击事件?是的,您是对的!我刚刚添加了按钮来输出onclick的值,效果很好!因此,似乎它在就绪的生命周期中还没有就绪。但准备就绪后是否有生命周期可供使用?