Доступ к функции polymer в javascript

#javascript #cordova #polymer

#javascript #кордова #полимер

Вопрос:

Я использую Polymer с Apache Cordova.

Я хочу привязать «кнопку возврата» Android, чтобы закрыть диалоговое окно. К сожалению, чтобы получить доступ к ShadowDOM, я нахожусь внутри Polymer js. Но backbutton, похоже, недоступен из полимерного «объекта».

Вот мой код :

 <script>
    Polymer({        
            // handle back button
            toggleDialog: function(event, detail, sender) {
                var dialog = this.shadowRoot.querySelector('#askOptionImgDialog');
                dialog.toggle();

            },
            ready: function() {
                document.addEventListener("backbutton", this.toggleDialog(), false);
            }
        });
</script>
  

Ничего не делать.

Я пробовал это :

 <script>
    Polymer({        
            // handle back button
            toggleDialog: function(event, detail, sender) {
                var dialog = this.shadowRoot.querySelector('#askOptionImgDialog');
                dialog.toggle();

            }
        });
    document.addEventListener("backbutton", ???????.toggleDialog(), false);
</script>
  

И кнопка «Назад», похоже, срабатывает, но я не знаю, как получить доступ к функции polymer снаружи.
Есть идеи?

Спасибо.

Ответ №1:

Почему бы просто не обернуть все в одно закрытие?

 <script>
  Polymer({domReady:
      function() {
        document.addEventListener("backbutton",
            function(event, detail, sender) {
              var dialog = this.shadowRoot.querySelector('#askOptionImgDialog');
              dialog.toggle();
            }, false);
       }
  });
</script>
  

Комментарии:

1. Потому что я должен «переключать» это окно также при нажатии на элемент, и я не хочу дублировать код.

2. Можете ли вы перефразировать это @FrPolymer? Что вам нужно переключать и когда?

3. Когда пользователь нажимает кнопку de (on tap), я отображаю диалоговое окно paper. Я хочу, чтобы пользователь закрыл этот документ-диалог, нажав кнопку «Назад» на своем телефоне.