开发者问题收集

未找到自定义元素 javascript 函数

2015-11-05
1329

我试图理解 Polymer。显然,自定义元素是整个 ShaBang 的关键。我确实构建了一些,有些可以正常工作,有些我只是无法让它们按照我的意愿工作。

顺便说一句,我使用的是 0.5 版。为什么,只是因为我懒得改变。

这是我的问题。

我希望在单击链接时弹出 Paper-Dialog。当代码直接位于 Index.html 页面中时,它可以完美运行。但是当我将其包装为自定义元素时,它无法找到我的 Javascript 事件。

我在控制台中收到此错误:

“未捕获的 ReferenceError:toggleDialog 未定义”

我知道这是由于我不理解的东西。但我很难掌握 Polymer 的细节。

这是我尝试执行的操作的代码。

<polymer-element name="cvirt-reader" attributes="content" >
  <template>   
    <a href="#" onclick="toggleDialog()">Read</a>    

    <div id="HelpDialog">   
      <paper-dialog  id="dlgHelper"  heading="Bottom Dialog" transition="paper-dialog-transition-bottom">
        <a href="#"><IMG src="/cvirtAnimee.gif"></a>
        <paper-button label="Fermer" affirmative autofocus></paper-button>
      </paper-dialog>
    </div>

  </template>
  <script>
  Polymer('cvirt-reader', {
      toggleDialog: function(e) {
        this.$.dlgHelper.toggle();
      }
    });
</script>
</polymer-element>
2个回答

更简单的答案

聚合物提供 on-&lt;事件名称&gt; 属性:

532345904 nofollow noreferrer“>声明事件映射 将您的元素的方法绑定到事件的方法。

只要您正确地命名属性,它就应该处理任何事件;聚合物将完成其余的。


原始答案

我认为您无法将 onClick 属性设置为一个函数在全球范围中。也许您应该尝试使用 Ready 函数( read )将侦听器绑定为 id a a element ):

826149974

事实是:使用 onclick =“ toggledialog()” 您的浏览器将寻找 toggledialog 在全局范围中的函数虽然它确实是您的聚合物元素的属性,因此全局范围不存在,从而导致 Reference> Reference Error

通过从内部绑定事件侦听器 Ready 功能,您需要的所有内容都是可以从当前范围访问的,也就是说:您可以通过 找到 toggledialog this 并将其添加为事件侦听器。

494875693
Victor Schubert
2015-11-05

onclick="toggleDialog()" 中删除 ()

如果像这样编写应该可以工作: on-click="toggleDialog"

Jonathan Andersson
2015-11-06