如何通过“;函数指针“/事件转换为Polymer/HTML中的子元素
How to pass a "function pointer"/ event to a child element in Polymer/HTML
我已经创建了一个使用纸质对话框的通用"create X dialog"组件,我想向该通用组件发送我希望在触发"创建按钮"时调用的特定操作。
如何在聚合物中发送函数/事件?我走错了路?聚合物确实谈到了听众和解雇,但我不确定如何在这个例子中应用这一点,也许我只是错过了页面上的一个关键点?
<dom-module id="my-add-dialog">
<template>
<style>
</style>
<paper-dialog id="dialog" entry-animation="scale-up-animation" exit-animation="fade-out-animation" with-backdrop>
<h2>{{title}}</h2>
<p>{{description}}</p>
<paper-button raisedButton id="test" label="Click" on-click="createGeneric">
</paper-button>
</paper-dialog>
</template>
</script>
<script>
Polymer({
is: 'my-add-dialog',
properties: {
createVirtual: {
type: Function
},
},
createGeneric: function() {
alert("I'm alive");
createVirtual();
},
open: function() {
this.$.dialog.open();
}
});
</script>
</dom-module>
组成的组件
<dom-module id="my-add-model-dialog">
<template>
<my-add-dialog id="dialog" title = "Acount Creation" description="Create Account" createVirtual="createmodel"></my-add-dialog>
</template>
<script>
Polymer({
is: 'my-add-model-dialog',
open: function(){
this.$.dialog.open();
},
createmodel: function(){
alert("Creating a model");
},
});
</script>
</dom-module>
要声明性地向Polymer元素添加事件侦听器,请插入以下形式的属性:
<自定义元素-EVENTNAME="METHODNAME">
其中:
-
EVENTNAME是要侦听的事件的小写名称(例如,
tap
、click
、blur
、my-custom-event
) - METHODNAME是事件处理程序方法的区分大小写的名称
然后,元素(或其子元素)可以用this.fire('EVENTNAME')
:触发该事件
<dom模块id="custom-element">。。。<脚本>聚合物({为:"自定义元素",foo:函数(){this.fire("我定制的活动")},。。。});<脚本><dom模块>
示例
以您的代码为例。。。
-
侦听
my-add-model-dialog
上的create
事件,将createmodel()
绑定为事件处理程序:<my-add-model-dialog on-create="createmodel"></my-add-model-dialog>
-
在
my-add-dialog
中,激发create
事件,该事件的气泡高达my-add-model-dialog
,调用createmodel()
。<script> Polymer({ is: 'my-add-dialog', createGeneric: function() { alert("I'm alive"); this.fire('create'); }, ... }); </script>
<head>
<base href="https://polygit.org/polymer+:master/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html">
<link rel="import" href="paper-dialog/paper-dialog.html">
<link rel="import" href="paper-button/paper-button.html">
</head>
<body>
<my-add-model-dialog></my-add-model-dialog>
<dom-module id="my-add-dialog">
<template>
<paper-dialog id="dialog" with-backdrop>
<h2>{{title}}</h2>
<p>{{description}}</p>
<paper-button raised on-click="createGeneric">Create</paper-button>
</paper-dialog>
</template>
<script>
Polymer({
is: 'my-add-dialog',
createGeneric: function() {
alert("I'm alive");
this.fire('create');
},
open: function() {
this.$.dialog.open();
},
ready: function() {
this.open();
}
});
</script>
</dom-module>
<dom-module id="my-add-model-dialog">
<template>
<my-add-dialog id="dialog" title="Account Creation" description="Create Account" on-create="createmodel"></my-add-dialog>
</template>
<script>
Polymer({
is: 'my-add-model-dialog',
open: function() {
this.$.dialog.open();
},
createmodel: function() {
alert("Creating a model");
}
});
</script>
</dom-module>
</body>
jsbin
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何编写HTML输入的JS内联
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量
- 如何使Javascript动态html表及其上的事件
- 在chrome.tabs.onCreated之后加载HTML页面
- 如何在vs2002中调试html页面
- 如何使用javascript或html下载PDF格式的填写表单
- 视频HTML没有'无法在Internet Explorer 11上工作
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 使用angular重定向到html页面
- 如何通过“;函数指针“/事件转换为Polymer/HTML中的子元素
- Polymer.js将处理程序附加到标准HTML Dom中的纸张按钮
- 使用Polymer通过HTML导入包含jQuery在Safari和Firefox中不起作用