首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在另一个自定义元素的模板中实例化时,自定义元素不检测子元素。

当在另一个自定义元素的模板中实例化时,自定义元素不检测子元素。
EN

Stack Overflow用户
提问于 2014-06-30 22:10:07
回答 1查看 370关注 0票数 1

我有一个RPG主HTML元素,定义如下。我正在index.html文件的正文中实例化它。

代码语言:javascript
复制
<link rel="import" href="packages/polymer/polymer.html">
<link rel="import" href="gridlayout.html">
 <link rel="import" href="gridtile.html">


<polymer-element name="rpg-main" attributes="">
  <template>
    <style>
      grid-tile {
      background: #FF00FF;
      width: 50px; 
      height: 50px     
      }
     :host {
       position: absolute;
       display: block;
       width: 500px;
       height: 500px;
      }

    </style>
    <grid-layout rows = "2" cols = "2" spacing = "50px">
       <grid-tile>
       </grid-tile>
       <grid-tile>
       </grid-tile>
       <grid-tile>
       </grid-tile>
       <grid-tile>
       </grid-tile>
    </grid-layout>
  </template>
  <script type="application/dart" src="rpgmain.dart"></script>
</polymer-element>

正如人们所预料的那样,我还定义了网格布局和网格块元素。在网格布局的构造函数中,我试图引用它的子构造函数。但是元素在上面的rpg-main类中实例化时认为它有0个子元素。

代码语言:javascript
复制
import 'package:polymer/polymer.dart';
import 'dart:html';

@CustomTag('grid-layout')
class GridLayout extends PolymerElement {
  @published int rows;
  @published int cols;
  @published int spacing;

  String _px = "px";
  String _perc = "%";

  GridLayout.created() : super.created() {

    print("NUM CHILDREN " + this.children.length.toString());

   /** for (int i = 0; i <= this.rows + this.cols - 2; i++) {
      Element child = this.children[i];
      this.children[i].style.margin = this._parseNum(spacing);
      child.style.float = "right";

      if (i % this.rows == this.rows) {
        child.style.clear = "right";
      }


    }**/
  }
  num _parseString(String s) {
    print(s.toString());
    return num.parse(s.split(_px)[0]);
  }

  String _parseNum(num n) {
    return n.toString() + _px;
  }
}

*上面的代码打印"NUM子级: 0“

它只是在我的rpg主元素中被实例化,所以我很惊讶它不会将网格瓷砖识别为子元素。这可能是因为网格布局元素正在rpg-main自定义元素的模板标记中实例化吗?(因此,也许网格布局并不认为它的子程序处于“光明地带”?)这将是一种耻辱,但如果是的话,解决办法是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-01 06:53:36

构造函数只是一个错误的位置。在使用这些元素之前,需要允许它们正确地初始化。

试一试

代码语言:javascript
复制
@override
void attached() {
  super.attached();
  print("NUM CHILDREN " + this.children.length.toString());
}

也见Justin在这里的回答When is shadowRoot available to a polymer component?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24499713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档