2014-09-10 2 views
2

Polymer 0.10.1까지 @published annotation은 선언 된 Polymer 요소에 특성을 만들었습니다.
이것은 중합체 0.11.0으로 변경되었습니다. 그 이후로 필드 값을 속성으로 사용하려면 @PublishedProperty(reflect: true)이 필요합니다.@bservable과 @published의 차이점

이 업데이트 @published@observable과 동일한 효과가있는 것으로 보입니다. 내가 놓친 게 있니?

+1

'@ published'을 (를) 얻을 수 있기 전에'@ tenured'를 얻을 수 있습니다. –

+0

아마도 :-). . –

답변

2

@published 특성을 사용하면 값을 HTML의 특성 자체로서 선언적으로 사용할 수 있습니다. 즉 당신은 여전히 ​​할 수 있습니다 :

<my-element myprop="{{hello}}"></my-element> 

변화는 attributes 속성을 통해 절차 적으로 값을 액세스하는 경우, 당신은 @PublishedProperty(reflect: true)을 포함해야한다는 것입니다. (이것은 당신이 직접 CustomTag에 클래스와 상호 작용 인 경우 경우 될 것 같지 않습니다

@PublishedProperty(reflect: true) 필요 :.

/* CSS */ 
x-foo[bar="hi"] { background-color: blue; } 

이 그렇지 않은 :이 또한 @PublishedProperty(reflect: true) 필요

var x = querySelector('x-foo'); 
x.bar = "hi"; 
// ... 
print(x.attributes["bar"]); 

:

XFoo x = querySelector('x-foo'); 
x.bar = "hi"; 
... 
print(x.bar); 

이것은 g roup for New Polymer Release 0.12.0

+0

그레이트! 링크를 가져 주셔서 감사합니다. 나는이 토론을 다시 읽을 필요가 있다고 생각한다. CustomTag 클래스와 상호 작용하면 주석이 필요 없으며 기존 필드로 충분합니다. –

+0

'reflect : true'가 기본값이고 argument 주석이 다른 경우'@PublishedProperty (reflect : false)'에 사용될 때 더 편리하지 않다고 생각하십니까? Polymer.js에서도'reflect : true'가 사용되기 때문에 이것이 사용 된 것 같습니다. 이 변경 사항이 도입 된 이후로'reflect : false'라는 속성을 게시 할 필요가 없었습니다. –

+0

개인적으로 필자는 필자의 구성 요소와 상호 작용하기 위해 '속성'을 거의 사용하지 않고 선언적으로 단방향으로 바인딩합니다. 그래서 나는'@PublishedProperty (reflect : true) '를 전혀 필요로하지 않았다. –