上下文:
我在Maverics MacOX(10.9.2)上使用聚合物(0.2.2)& Chrome代理(34.0.1847.131)使用条件模板构建Web组件。
问题:
我在条件模板中包含id的标记。当我尝试通过this.$
对象将此标记检索为JS节点时,虽然条件的计算结果为true,但仍会返回undefined
值。这里有一段示例代码:
在HTML模板上:
...
<template if="{{true-condition}}">
<wc-my-tag id="A"></wc-my-tag>
</template>
...
On Script:
Polymer ('wc-my-tag', {
...
ready: function () {
console.log (this.$.A); // prints "undefined" ???
}
}
问题:
在模板解析之前,似乎填充了this.$
对象。这是聚合物库中的错误还是正常行为?无论如何,我怎么能继续在代码片段中的id =“A”下获取标签?
提前致谢。
答案 0 :(得分:1)
正如您所注意到的,在条件返回true之前,条件模板不会写入DOM。在调用ready时,仔细检查{{true-condition}}实际上是否为真。如果是,请考虑将处理程序放在domReady中。如果这不起作用,请尝试使用this.async
延迟,直到Polymer有机会进行最后一次评估和渲染,例如:this.async(function() {console.log(this.$.A);}.bind(this));
如果所有这些都不起作用,请发布一个代码的jsfiddle,以便我们可以调试它:)
我也强烈建议您使用最新版本的Polymer,0.2.4。现在这是一个如此迅速发展的项目,在可能的情况下坚持使用最新版本是值得的。