1
지난 몇 시간 동안 나는 내 Polymer 프로젝트 내의 형제 요소를 언급하는 데 어려움을 겪었습니다. 다트 (Dart)의 형제 (Sibling) 폴리머 요소를 참조하십시오.
/* main.html */
<link rel="import" href="siblingA.html">
<link rel="import" href="siblingB.html">
<polymer-element name="app-main">
<template>
<app-siblingA></app-siblingA>
<app-siblingB></app-siblingB>
</template>
<script type="application/dart" src="main.dart"></script>
</polymer-element>
/* siblingA.html, nothing special about it */
<polymer-element name="app-siblingA">
<template>
<button on-click="{{doSomething))">Do something</button>
</template>
<script type="application/dart" src="siblingA.dart"></script>
</polymer-element>
/* siblingA.dart */
import 'package:polymer/polymer.dart';
import 'dart:html';
@CustomTag('app-siblingA')
class SiblingA extends PolymerElement {
bool get applyAuthorStyles => true;
SiblingA.created() : super.created() {
}
void doSomething(MouseEvent e, var detail, Node target) {
var profile = document.querySelector('app-siblingB');
print(profile); // This is always null, why?
}
}
가 지금은 문서에서 내
app-main
노드를 얻을 수 있지만, 형제 요소를 얻기에 실패 다음 설치를 상상해보십시오. 성공하지 않고
shadowRoot
을 통해 형제 요소를 가져 오려고했습니다.
형제 요소를 얻을 수있는 방법이 경우 app-siblingB
document
또는 shadowRoot
?
이 솔루션은 여전히 작동합니까 작동합니다? 나는 Exception "Breaking on exception : type 'DocumentFragment'가 'ShadowRoot'타입의 subtype이 아님을 알아 냈습니다." ShadowRoot에 캐스팅 할 때 – Wienczny
코드가 작동하지 않는 이유를 발견했습니다. 요소가 아직 DOM에 연결되지 않았습니다. 'void attached()'가 호출되기 전에 parentNode는 DocumentFragment입니다. 나는'void ready()'에서 그것을 사용하고 있었다. – Wienczny