javascript - Polymer 添加事件监听器

标签 javascript polymer

我正在使用 Polymer,我很困惑什么时候应该使用什么类型的绑定(bind)。比如说我有以下代码:

<body unresolved touch-action="auto">
    <my-app></my-app>
    <polymer-element name="my-app">
        <template>
            <core-drawer-panel id="drawerPanel">
                <core-header-panel drawer id="drawer" mode="seamed">
                    <core-toolbar id="navheader">
                        <span>My Site</span>
                    </core-toolbar>

                    <core-menu selected="0" selectedItem="{{selectedMenu}}">
                        <paper-item icon="home" label="One"></paper-item>
                        <paper-item icon="today" label="Two"></paper-item>
                    </core-menu>
                </core-header-panel>

                <core-header-panel main mode="seamed">

                    <core-toolbar id="mainheader">
                        <paper-icon-button id="navicon" icon="menu"></paper-icon-button>
                        <paper-icon-button id="back" icon="arrow-back"></paper-icon-button>
                        <span flex>{{selectedMenu.label}}</span>
                    </core-toolbar>
                    <div class="content">
                        Content goes here!
                    </div>
                </core-header-panel>
            </core-drawer-panel>
        </template>
        <script>
            Polymer('my-app', function(){

            });
        </script>
    </polymer-element>
</body>

在过去,我没有在 polymer-element 中有这段代码,而是直接在代码中。然后我可以做类似的事情:

var navicon = document.getElementById('navicon');
var back = document.getElementById('back');
var drawerPanel = document.getElementById('drawerPanel');

navicon.addEventListener('click', function(){
    drawerPanel.togglePanel();
});
back.addEventListener('click', function(){
    window.history.back();
});

但是,我不知道如何在 polymer-element 中执行此操作。

此外,我过去常常使用 document.addEventListener('polymer-ready', function(){ ... }); 来确保元素在初始化之前已加载。我该如何正确地完成这一切?

最佳答案

您只需要将旧的 js 放在 polymer elements 脚本标签中即可。 ready 函数在设置元素时调用。

Polymer() 的第二个参数需要是一个对象,而不是一个函数。

<script>
    Polymer('my-app', {
        ready: function () {
            var navicon = this.$.navicon;
            var back = this.$.back;
            var drawerPanel = this.$.drawerPanel;

            navicon.addEventListener('click', function() {
                drawerPanel.togglePanel();
            });
            back.addEventListener('click', function() {
                window.history.back();
            });
        }
    });
</script>

有关更多信息,请阅读很棒的 polymer docs .

关于javascript - Polymer 添加事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850113/

相关文章:

javascript - 通过iron-ajax初始化对象数组(链接响应到调用者的元素)

javascript - 在 Firefox 悬停时从中心调整动画大小

javascript - 定义图像的一部分并分配给悬停、单击事件

javascript - 颜色 slider 渐变

javascript - 如何在polymer3的模板中嵌入html代码(如unsafeHTML)

javascript - 如何从一系列颜色中动态更改 polymer 1.0 纸质按钮的颜色?

css - 直接在 polymer 中设计元素样式是不好的做法吗?

dart - 尝试通过单击并拖动Web组件来创建边界框

javascript - 仅通过引用绑定(bind)到服务属性?

c# - 使用 JSON.NET 在 C# 中进行无痛 JSON 反序列化