在Polymer函数中按索引号调用list-item

时间:2014-12-14 20:00:05

标签: javascript json polymer getattribute plunker

我结合了一个Polymer-element,它通过Dutch Rijksmuseum(JSON输出)的API获取结果,并获得一个获取特定位置坐标的元素。博物馆的艺术品有时会有一个名为" productionPlaces"的项目,它可以在列表中保存多个值。

该网站目前展示了艺术作品,其中一些元数据,以及制作地点+这些地方的坐标:http://plnkr.co/edit/nbTN1kNzcqHANWECB5fI?p=preview

现在,我希望能够 显示地点+坐标(如果存在)。至少如果" productionPlaces"是空的,它应该打印出一些文字,例如"生产地点未知"。这应该是一个自我调用的功能。

由于我仍然无法获取自我调用的函数,因此我当前正在使用on-click事件来执行我迄今为止创建的函数。我还使用警报框,以便我可以看到我在做什么。

到达我需要的地方的第一步是让功能实际检查所有" productionPlaces"每个对象中的列表项。

到目前为止,我目前的功能如下:

checkPlace: function() {
  y = 1
  x = 0
  var place = this.object.artObjects[y].productionPlaces[x];
  alert (place)

警报框现在显示" Zuid-Holland",这确实是第二个对象(y = 1)的第一个productionPlace(x = 0)。所以,这个功能起作用了。

然而,为了达到我的最终目标(如上所述),该功能需要自动识别值" x"和" y"来自API结果。我已经开始" y"。但是我没有成功,以下"按钮+功能"施工失败,因为警报框不再弹出:

<button on-click="{{checkPlace}}" objIndex="{{objIndex}}"></button>

checkPlace: function(s) {
var place =   this.object.artObjects[s.getAttribute('objIndex')].productionPlaces[0];
alert (place)

当前的模板绑定&amp;模板重复应该允许我通过{{objIndex}}显示每个对象的索引号,这似乎工作正常。那么,为什么我的&#34;按钮+功能&#34;施工在警报箱中产生可见的结果?

1 个答案:

答案 0 :(得分:1)

我认为你最好的选择是使用if模板。这将查看您的响应中是否存在该信息并显示该信息是否为真,如果不存在则将其隐藏。

之类的东西
<template if="{{obj.productionPlaces[0]}">
    // do something with {{obj.productionPlaces[0]}
</template>

也许http://plnkr.co/edit/92WtYDW0gao52aj7gpsb?p=preview

希望这适合你。