2013-03-07 3 views
1

LoginState 필드가있는 웹 구성 요소 Login가 있습니다. LoginState 인스턴스를 전달하려고합니다.이 인스턴스는 코드의 다른 부분에서 설정 될 수 있으며, 생성 된 메서드 앞/뒤에 Login 인스턴스에 추가 할 수 있습니다.변수를 생성 할 때 WebComponent에 변수를 전달하려면 어떻게해야합니까?

이것이 가능합니까? 그렇지 않다면 내 대안은 무엇입니까? 내가 생각할 수있는 유일한 다른 방법은 LoginState 인스턴스를 보유하고있는 전역 변수를 사용하는 것인데, 이는 좋은 생각처럼 보이지 않습니다. 구성 요소를 인스턴스화 할 때

답변

1

그것은 참으로 가능하다, 구문

<x-custom-element a-field-name="{{expression}}"></x-custom-element> 

표현은 평가 될 것입니다 그리고 당신은 aFieldName이의 값으로 초기화됩니다 이름으로 CustomElement 클래스에서 정의한 모든 필드를 사용 {{expression}} (see relevent discussion). 개인적으로 나는 당신의 사이트를 XSS 공격에 엄청나게 공감할 수있는 것처럼 당신의 loginstate와 같은 것을 제안하지 않을 것입니다 ...

아마 더 좋은 생각은 당신이 당신의 컴포넌트 클래스에 초기화 후의 로그인 상태 요소를 DOM에 삽입 한 후 query('#myLoginStateId').xtag을 사용하여 요소의 필드에 액세스 한 다음 노출 상태를 로그인 상태로 호출 할 수 있습니다.

요소가 DOM에 삽입 될 때까지 요소의 xtag에 액세스 할 수 없으므로 요소의 inserted() 메서드에서 적절한 이벤트를 발생시켜 응용 프로그램의 나머지 부분이 언제인지 알 수 있도록하십시오 적절한 필드를 설정하는 것이 안전합니다.

+0

어떻게하면 그 사건을 제기 할 수 있습니까? – jtfairbank

+0

시도하십시오 void inserted() { var evt = new Event ("load"); this.dispatchEvent (evt); } 요소의 컨테이너에 onLoad 이벤트를 등록하고 (evt.target.xtag)를 확인하여 null이 아닌지 확인하십시오. 이상적으로, 사용자 정의 이벤트 유형을 사용 하겠지만 ... – ovangle

+0

좋은 소리, 많이 감사합니다! – jtfairbank