是否可以在路径中使用属性(下面标记为PROPERTY)?
<template is="dom-if" if="[[one.two.PROPERTY.four]]">
...
</template>
class MyTag extends Polymer.Element {
static get is() {return 'my-tag'}
static get properties() {
return {
PROPERTY: String
}
}
}
customElements.define(MyTag.is, MyTag)
答案 0 :(得分:1)
<dom-module id="my-tag">
<template>
<template is="dom-if" if="{{_ifFour}}">
<b>yo</b>
</template>
</template>
<script>
class TestElement extends Polymer.Element {
static get is() { return 'my-tag' }
static get properties () {
return {
PROPERTY: {
type: String,
value: 'initial',
observer: '_PROPERTYChanged'
},
one: {
type: Object,
value: function () {
return {
two: {}
}
}
},
_ifFour: {
type: Boolean,
value: false
}
}
}
static get observers () {
return ['_computeIfFour(one.*)']
}
_computeIfFour () {
if (this.one.two[this.PROPERTY] === undefined)
this._ifFour = false;
this._ifFour = this.one.two[this.PROPERTY].four;
}
_PROPERTYChanged (propertyName, old) {
if (old) {
delete this.one.two[old];
}
this.one.two[propertyName] = {
four: ''
}
}
}
customElements.define(MyTag.is, MyTag)
</script>
</dom-module>
实际上有一种方法可行。但这太过分了 hacky 你不应该在生产代码中使用它。如果共享它是严重的,如果你的代码可能会增长,你可能会产生不良的副作用。