Вызов элемента списка по порядковому номеру в функции Polymer

Я объединил элемент Polymer, который получает результаты через API голландского Rijksmuseum (вывод JSON), с элементом, который получает координаты конкретных мест. В произведениях искусства из музея иногда есть элемент под названием «productionPlaces», который может содержать несколько значений в списке.

В настоящее время на сайте показаны произведения искусства, некоторые их метаданные и места производства + координаты этих мест: http://plnkr.co/edit/nbTN1kNzcqHANWECB5fI?p=preview

Теперь я хочу иметь возможность только показывать места и координаты, если они существуют. По крайней мере, если «productionPlaces» пуст, он должен распечатать небольшой текст, например. «Место производства неизвестно». Это должна быть самовызывающаяся функция.

Поскольку у меня все еще возникают проблемы с получением функций для самовызова, я в настоящее время использую событие по щелчку для выполнения функции, которую я создал до сих пор. Я также использую окно оповещения, чтобы видеть, что я делаю.

Самый первый шаг в том, чтобы добраться туда, где мне нужно быть, — это заставить функцию фактически проверять значение всех элементов списка «productionPlaces» в каждом объекте.

Пока что моя текущая функция для этого выглядит следующим образом:

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

Окно предупреждения теперь показывает "Zuid-Holland", которое действительно является первым местом производства (x=0) второго объекта (y=1). Итак, функция работает.

Однако для достижения моей конечной цели (объясненной выше) функция должна автоматически распознавать значения «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)

Текущие шаблоны Template-Bind и Template-repeat должны позволить мне показать номер индекса каждого объекта через {{objIndex}}, похоже, это работает нормально. Итак, почему моя конструкция «кнопка + функция» не дает видимого результата в окне предупреждения?


person Montmons    schedule 14.12.2014    source источник
comment
Это ссылка на плункер, который не работает, если вы нажмете кнопку, кажется, ничего не произойдет. >plnkr.co/edit/X9dJ9xpwqV4tI64OSIth?p=preview   -  person Montmons    schedule 15.12.2014


Ответы (1)


Я думаю, что лучше всего использовать шаблон if. это посмотрит, существует ли информация в вашем ответе, и отобразит информацию, если она верна, и скроет ее, если ее нет. что-то вроде

<template if="{{obj.productionPlaces[0]}">
    // do something with {{obj.productionPlaces[0]}
</template>

возможно, http://plnkr.co/edit/92WtYDW0gao52aj7gpsb?p=preview

Надеюсь, что это работает для вас .

person jimi dough10    schedule 14.12.2014
comment
Спасибо! Я не думал об этом ... Я съедал свое разочарование из-за того, что никак не мог заставить эту функцию работать ... Это более простое решение и работает лучше :). - person Montmons; 15.12.2014