聚合物 1.0:<iron-meta> 用法
Polymer 1.0: <iron-meta> usage
Polymer 1.0 元素的正确用法 <iron-meta>
令人困惑。这是 link on Github. And here is the link to the Polymer demo site.
有人可以提供一个正确的代码示例来说明如何使其工作吗?
这是我目前的代码。
<dom-module id="generic-element">
<style>...</style>
<template>
<iron-meta id="meta" key="info" value="foo/bar"></iron-meta>
The <code>value</code> stored at <code>key="info"</code> is <code><span>{{test}}</span></code>.
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'generic-element',
properties: {
test: {
value: function(){
return "Hello world"; // This is the only thing I can get to work so far.
// return (new Polymer.IronMetaQuery({key: 'info'}).value); // Doesn't totally break.
// All my other below attempts totally fail. Everything breaks.
// return this.$.meta.IronMetaQuery({key: 'info'}).value;
// return this.IronMetaQuery({key: 'info'}).value;
// return this.$.meta.byKey('info').getAttribute('value');
// return this.$.meta.byKey('info').value;
}
}
}
});
})();
</script>
这里是 Github link to the issue. And here is a Github repository,其中包含完整网络应用上下文中的完整问题代码。
您的代码存在问题,您试图将元素 属性 的默认值 设置为在同一元素的模板 本身中声明的值。 创建元素和附加元素之间发生的两件事包括:a)设置属性的默认值; b) 模板准备好被标记为 DOM。这些任务异步发生,因此本质上您正在生成竞争条件。
尝试在 ready()
回调中设置您的 test
默认值 - ready()
回调保证 DOM 已准备好被访问,在您的情况下正是您声明 <iron-meta>
密钥的位置。
<dom-module id="generic-element">
<style>...</style>
<template>
<iron-meta id="meta" key="info" value="foo/bar"></iron-meta>
The <code>value</code> stored at <code>key="info"</code> is <code><span>{{test}}</span></code>.
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'generic-element',
properties: {
test: String
},
ready: function () {
// this will work
this.test = this.$.meta.byKey("info");
}
});
})();
</script>
Polymer 1.0 元素的正确用法 <iron-meta>
令人困惑。这是 link on Github. And here is the link to the Polymer demo site.
有人可以提供一个正确的代码示例来说明如何使其工作吗?
这是我目前的代码。
<dom-module id="generic-element">
<style>...</style>
<template>
<iron-meta id="meta" key="info" value="foo/bar"></iron-meta>
The <code>value</code> stored at <code>key="info"</code> is <code><span>{{test}}</span></code>.
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'generic-element',
properties: {
test: {
value: function(){
return "Hello world"; // This is the only thing I can get to work so far.
// return (new Polymer.IronMetaQuery({key: 'info'}).value); // Doesn't totally break.
// All my other below attempts totally fail. Everything breaks.
// return this.$.meta.IronMetaQuery({key: 'info'}).value;
// return this.IronMetaQuery({key: 'info'}).value;
// return this.$.meta.byKey('info').getAttribute('value');
// return this.$.meta.byKey('info').value;
}
}
}
});
})();
</script>
这里是 Github link to the issue. And here is a Github repository,其中包含完整网络应用上下文中的完整问题代码。
您的代码存在问题,您试图将元素 属性 的默认值 设置为在同一元素的模板 本身中声明的值。 创建元素和附加元素之间发生的两件事包括:a)设置属性的默认值; b) 模板准备好被标记为 DOM。这些任务异步发生,因此本质上您正在生成竞争条件。
尝试在 ready()
回调中设置您的 test
默认值 - ready()
回调保证 DOM 已准备好被访问,在您的情况下正是您声明 <iron-meta>
密钥的位置。
<dom-module id="generic-element">
<style>...</style>
<template>
<iron-meta id="meta" key="info" value="foo/bar"></iron-meta>
The <code>value</code> stored at <code>key="info"</code> is <code><span>{{test}}</span></code>.
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'generic-element',
properties: {
test: String
},
ready: function () {
// this will work
this.test = this.$.meta.byKey("info");
}
});
})();
</script>