以编程方式访问Polymer内部元素

时间:2014-02-17 21:31:18

标签: dart dart-polymer

我将我的应用程序封装在Polymer元素中,我想在其中使用其他聚合物元素。要调用内部元素的所有方法,我试图使用$ []。 内部的外部聚合物元素我有这个:

ImageEditor ime;
DivElement div2;
ImageTool.created(): super.created(){
  div2 = $["secondDiv"];
  ime = $["imageEditor1"]
}

在Html中,我只想:

<polymer-element name="da-imagetool">
<template>
<div class="images" id="mainDiv">
  <da-imageeditor id="imageEditor1" name="ied"></da-imageeditor>

最后用脚本src。 出于某种原因,当我将imageEditor1分配给ime时会出现异常。

  

异常:类型'HtmlElement'不是'value'类型'ImageEditor'的子类型。

3 个答案:

答案 0 :(得分:1)

看起来浏览器尚未升级<da-imageeditor>元素。

确保您<import> <da-imageeditor>元素,并在@CustomTag类声明中使用正确的ImageEditor注释。

答案 1 :(得分:0)

这很可能是导入路径的问题。 如果您不使用正确的路径,则无法识别类型(规范化问题)

这个bug应该在一段时间内解决 https://code.google.com/p/dart/issues/detail?id=15953 但我从未与Polymer合作过。

显示您的导入路径(HTML和Dart)以及您应用的目录结构(您的输入页面和您的Polymer元素在哪里)然后我会看一下。

答案 2 :(得分:0)

您使用的是哪种版本的飞镖聚合物?使用0.9.5,以下几行:

XElement.created(): super.created() { print($['el-id']); }

void enteredView() { print($['el-id']); }

在created()中,被引用的元素什么都没有,而在enteredView()中,它确实引用了阴影根的特定元素。

如果使用shadowRoot.querySelector('#el-id')代替速记地图$['el-id'],行为就会消失。