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