通过在Polymer中的条件模板中定义的id检索标签?

时间:2014-05-16 20:31:55

标签: javascript templates polymer

上下文:

我在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”下获取标签?

提前致谢。

1 个答案:

答案 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。现在这是一个如此迅速发展的项目,在可能的情况下坚持使用最新版本是值得的。