聚合物 2.0 铁形式响应触发器 dom-if
Polymer 2.0 iron-form response trigger dom-if
如何使用来自 iron-form
的响应数据来触发 dom-if
模板?如果返回了数据,我想显示模板。此代码不起作用。我在这里做错了什么?
<link rel="import" href="../components/polymer/polymer-element.html">
<link rel="import" href="../components/polymer/lib/elements/dom-if.html">
<link rel="import" href="../components/iron-form/iron-form.html">
<dom-module id="a-tag">
<template>
<iron-form>
<form action="/" method="get">
<input name="test">
<button></button>
</form>
</iron-form>
<template class="iftemplate" is="dom-if" if="[[data]]">
<p>HELLO</p>
</template>
</template>
<script>
class ATag extends Polymer.Element {
static get is() {return 'a-tag'}
ready() {
super.ready()
this.shadowRoot.querySelector('iron-form').addEventListener('iron-form-response', (event) => {
this.shadowRoot.querySelector('.iftemplate').data = event.detail.response
})
}
}
customElements.define(ATag.is, ATag)
</script>
</dom-module>
你在这里做错了很多事,
首先,我建议向表单元素 iron-form
添加一个 id
,这样您就可以轻松地指向 Polymer 元素的代码。
<iron-form id="my-form">
...
</iron-form>
并像这样添加事件侦听器:
this.$['my-form'].addEventListener('iron-form-response', ...);
您还试图在模板中添加 属性 data
dom-if
我不明白为什么。 [[data]]
在您的元素范围内引用 属性。您必须在正确的部分定义此 属性。
static get properties () {
return {
data: {
type: String,
value: ''
}
};
}
并在您的事件侦听器回调中:
ready() {
super.ready()
this.$['my-form'].addEventListener('iron-form-response', (event) => {
// this.data = event.detail.response;
this.data = 'some data'; // for testing
});
}
如何使用来自 iron-form
的响应数据来触发 dom-if
模板?如果返回了数据,我想显示模板。此代码不起作用。我在这里做错了什么?
<link rel="import" href="../components/polymer/polymer-element.html">
<link rel="import" href="../components/polymer/lib/elements/dom-if.html">
<link rel="import" href="../components/iron-form/iron-form.html">
<dom-module id="a-tag">
<template>
<iron-form>
<form action="/" method="get">
<input name="test">
<button></button>
</form>
</iron-form>
<template class="iftemplate" is="dom-if" if="[[data]]">
<p>HELLO</p>
</template>
</template>
<script>
class ATag extends Polymer.Element {
static get is() {return 'a-tag'}
ready() {
super.ready()
this.shadowRoot.querySelector('iron-form').addEventListener('iron-form-response', (event) => {
this.shadowRoot.querySelector('.iftemplate').data = event.detail.response
})
}
}
customElements.define(ATag.is, ATag)
</script>
</dom-module>
你在这里做错了很多事,
首先,我建议向表单元素 iron-form
添加一个 id
,这样您就可以轻松地指向 Polymer 元素的代码。
<iron-form id="my-form">
...
</iron-form>
并像这样添加事件侦听器:
this.$['my-form'].addEventListener('iron-form-response', ...);
您还试图在模板中添加 属性 data
dom-if
我不明白为什么。 [[data]]
在您的元素范围内引用 属性。您必须在正确的部分定义此 属性。
static get properties () {
return {
data: {
type: String,
value: ''
}
};
}
并在您的事件侦听器回调中:
ready() {
super.ready()
this.$['my-form'].addEventListener('iron-form-response', (event) => {
// this.data = event.detail.response;
this.data = 'some data'; // for testing
});
}