polymerpolymer-1.0paper-dialog

Polymer Paper Dialog not opening on Safari or Firefox


Trying to get this paper-dialog to open when a paper button is clicked but it doesn't seem to want to work outside of Chrome. I feel like the issue has to do with the fact that it is in a dom-repeat but I'm not sure any help you could give me would be greatly appreciated. The error I am getting in Safari is "TypeError: dialog1.toggle() is not a function. (In 'dialog1.toggle()','dialog1.toggle' is undefined)". In Firefox I just got "TypeError: dialog1.toggle is not a function". Here is my code I hope someone can point me in the right direction.

<script src="../bower_components/webcomponentsjs/webcomponents.js"></script>
<link rel="import" href="../bower_components/iron-ajax/iron-ajax.html">
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import" href="../bower_components/paper-item/paper-item.html">
<link rel="import" href="../bower_components/paper-button/paper-button.html">
<link rel="import" href="../bower_components/paper-dialog/paper-dialog.html">
<link rel="import" href="../bower_components/paper-dialog-behavior/paper-dialog-behavior.html">
<link rel="import" href="../bower_components/paper-dialog-behavior/demo/simple-dialog.html">
<link rel="import" href="../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
<link rel="import" href="../bower_components/paper-listbox/paper-listbox.html">
<link rel="import" href="../bower_components/paper-dialog-scrollable/paper-dialog-scrollable.html">
<link rel="import" href="../bower_components/iron-demo-helpers/demo-snippet.html">
<link rel="import" href="../bower_components/iron-demo-helpers/demo-pages-shared-styles.html">
</head>
<body class="unresolved">


<template is="dom-bind">
<template is="dom-repeat" items="{{data}}">
<paper-button raised onclick$="dialog{{item.id}}.toggle()">{{item.series}}  </paper-button>
  <simple-dialog id$="dialog{{item.id}}">
    <h2>{{item.series}}</h2>
    <p>{{item.data}}</p>
  </simple-dialog>
<br />
</template>
<iron-ajax auto id="GetData" url="get_category_data.php" handle-as="json" last-response="{{data}}" ></iron-ajax>
</template>

</body>

Solution

  • Using getElementById seems to work fine. Here is the code that worked for me in firefox. Hopefully it'll also work in safari

    <template is="dom-bind">
     <template is="dom-repeat" items="{{data}}">
      <paper-button raised onclick$="toggleDialog({{item.id}})">{{item.series}}</paper-button>
      <simple-dialog id$="dialog{{item.id}}">
       <h2>{{item.series}}</h2>
       <p>{{item.data}}</p>
      </simple-dialog>
      <br />
     </template>
     <iron-ajax auto id="GetData" url="get_category_data.json" handle-as="json" last-response="{{data}}" ></iron-ajax>
    </template>
    <script>
     function toggleDialog(id){
      var dialog = document.getElementById('dialog'+id);
      dialog.toggle();
     }
    </script>