Как проверить, существует ли функция у ребенка (полимер) - PullRequest
0 голосов
/ 04 июня 2018

Parent

check() {
  if(typeof this.$.child.function() == 'function') {
    // do something
  }
}

Как проверить, существует ли дочерняя функция?

Это выдает

Uncaught TypeError: this. $. Child.functionне является функцией

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Если вы не используете зарезервированное ключевое слово 'function' в качестве имени метода, следующее должно работать идеально:

check() {
  if(typeof this.$.child.someFunDefinedInChild == 'function') {
  //do work
  }
}
0 голосов
/ 04 июня 2018

Вероятно, основная проблема вашего кода заключается в том, что вы фактически вызываете функцию с круглыми скобками (), а затем сравниваете результат со строкой 'function'.Чтобы проверить существование, удалите скобки:

if (this.$.child.function == 'function') { /* ... */ };

Однако ошибка также может быть вызвана тем, что this.$.child является неопределенным при вызове.Это может произойти, если вы пытаетесь получить доступ к статической карте узлов вашего компонента (this.$), когда Polymer еще не инициализировал ее.

Карта доступна в обратном вызове жизненного цикла ready: см. здесь .

...