2015-01-12 2 views
1

그래서 다른 PolymerElement에 PolymerElement를 동적으로 추가하려고했습니다. Polymer 클래스 이름 등록

Exception: Uncaught Error: type 'HtmlElement' is not a subtype of type 'MyPolyElem ' in type cast.

I 형에 액세스하려고하면

MyPolyElem newRow = new MyPolyElem(); 
    (newRow as MyPolyElem).type = type; // -> Exception 
    panelBody.append(newRow); 

, 그것은 newRow이는 HTMLElement하고 "유형"을하지 않는 것을 말한다. 내가 캐스팅하려고하면 HtmlElement의 하위 유형이 아니라고합니다.

@CustomTag('poly-elem') 
class MyPolyElem extends PolymerElement { 
    @published String type = "int"; 

    void attached() { 
     super.attached(); 
    } 
    factory MyPolyElem() => document.createElement("poly-elem"); 
    MyPolyElem.created() : super.created() {} 
} 

분명히 폴리머 요소를 만들면 해당 HtmlElement입니다. 내가 태그와 쿼리로 HTML을 작성한다면 MyPolyElem입니다. 그래서이 태그에 대한 클래스 이름을 어떻게 등록 할 수 있는지 알고 싶습니다.

답변

1

동적으로 생성 된 요소는 선언적으로 추가 된 요소처럼 캐스트 될 수 있습니다.
Polymer가 아직 완전히 초기화되지 않았기 때문에이 방법이 효과가 없을 것이라고 확신합니다.

맞춤형 main() 방법을 사용하는 경우 Polymer를 올바르게 초기화하는 방법은 how to implement a main function in polymer apps을 참조하십시오.

폴리머 요소를 동적으로 생성하기 위해 document.createElement()을 사용하지 않았습니다. 대신 new Element.tag('xxx-yyy')을 사용했습니다. main() 메서드가 원인이 아닌 경우 (Dynamically create polymer element 참조)

동적으로 만들지 만 장식을 추가 할 때와 마찬가지로 가져 오기를 추가해야합니다.

+0

'main()'이 아니라면 어디에서이 코드를 추가 했습니까? –

+0

다른 CustomElement에서 Button에 의해 호출되는 함수에서 호출됩니다. 새로운 Element.tag (..)은 HtmlElement를 반환합니다. – Azael

+0

사실이 경우입니다 ... HTML 파일에서 태그를 사용하지 않았으므로 HTML을 가져 오지 않았습니다 ... – Azael