zac*_*con 2 html javascript polymer
抱歉,我是Polymer的专家。
到目前为止,我已经完成了一个HTML文件(视为外部对话框),其中包含一些内容。
首先,用户单击主页上的按钮,然后显示一个对话框。在对话框中,用户将输入文本(此时,输入任何内容),然后单击“提交”按钮。在这一点上,它要么成功,要么如果文本框为空,则引发错误,选中文本框,并且(如果可能)变为红色/显示错误消息。
不幸的是,即使让聚合物事件失败了,我也无法逃脱。
到目前为止,这是我的代码:
主页(工作正常):
<!DOCTYPE HTML>
<html>
<head>
<link rel="import" href="elements/accountability-ticket.html"/>
</head>
<body>
<section>
<paper-button raised label="Buy Now" id="ticket" onclick="clickHandler('diagTicket')">Buy Now</paper-button>
</section>
<section><accountability-ticket></accountability-ticket></section>
<script>
window.addEventListener('WebComponentsReady', function(e) {
// imports are loaded and elements have been registered
console.log('Components are ready');
});
function clickHandler(e) {
var dialog = document.getElementById(e);
if (dialog) {
dialog.open();
}
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
那里有一个按钮“立即购买”,它将以下代码作为弹出对话框形式调用:
<dom-module id="accountability-ticket">
<template>
<paper-dialog with-backdrop entry-animation="scale-up-animation"
exit-animation="fade-out-animation" id="diagTicket">
<h2>I Own It Ticket </h2>
<div class="ctrlButtons flex">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm>Submit</paper-button>
</div>
</paper-dialog>
</template>
</dom-module>
<script>
Polymer({
is: "accountability-ticket"
});
</script>
Run Code Online (Sandbox Code Playgroud)
根据我的在线搜索,要获取按钮以检查单击时文本框是否为空,我首先需要一个eventHandler。我了解我应该输入以下内容:
on-click="confirmClick"
Run Code Online (Sandbox Code Playgroud)
在<paper-button dialog-confirm>Submit</paper-button>。
大概<script>部分是这样的:
Polymer('my-element', {
confirmClick: function() {
alert('Click event triggered');
});
Run Code Online (Sandbox Code Playgroud)
但是考虑到我已经有了这个:
Polymer({
is: "accountability-ticket"
});
Run Code Online (Sandbox Code Playgroud)
以上,到目前为止,我尝试放入confimClick该对话框的结果是,当用户单击“立即购买”时,整个对话框都没有出现,我不确定该怎么做。
目前,如何设置点击事件?谢谢。
要注册事件处理程序,请删除双括号。
<paper-button on-click="confirmClick">Confirm</paper-button>
Run Code Online (Sandbox Code Playgroud)
更新资料
感谢更新。现在,我意识到您正在尝试在Polymer元素之外的主页上设置点击处理程序。上面的语法仅在内部有效<dom-module>。但是,您可以使用“传统”方法来设置事件处理程序。
window.addEventListener('WebComponentsReady', function(e) {
// imports are loaded and elements have been registered
document.querySelector("#ticket").addEventListener("click", clickHandler);
});
function clickHandler(e) {
// your code here
}
Run Code Online (Sandbox Code Playgroud)
更新资料
另一方面,如果您位于Polymer元素内,则可以将事件处理程序添加到原型中。注册处理程序的id中的dom-module,必须与is原型中的属性匹配(在这种情况下为问责制票证)。因此,假设您的模块如下所示:
<dom-module id="accountability-ticket">
<template>
<paper-button on-click="confirmClick">Confirm</paper-button>
</template>
</dom-module>
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式将处理程序添加到原型:
<script>
Polymer({
is: "accountability-ticket",
confirmClick: function(event){
console.log(event);
}
});
</script>>
Run Code Online (Sandbox Code Playgroud)