구성 요소 이벤트를 부모/자식 구성 요소로 제한하고 거품 발생을 방지하는 방법.각도 다트 하위 구성 요소 범위
ParentComponent.dart
@Component(
selector: "parent-component",
template: '<div>parent value: {{value}}<content></content></div>',
useShadowDom: false
)
class ParentComponent implements ScopeAware{
Scope _scope;
@NgAttr('value')
String value;
void set scope(Scope scope){
_scope = scope;
_scope.on('select-child').listen((ScopeEvent event){
value = event.data['value'];
});
}
}
ChildComponent.dart
@Component(
selector: "child-component",
template: '<div ng-click="select()">child: {{value}}</div>',
useShadowDom: false
)
class ChildComponent implements ScopeAware{
Scope _scope;
@NgAttr('value')
String value;
void select(){
_scope.parentScope.broadcast('select-child', {
'value': value
});
}
void set scope(Scope scope){
_scope = scope;
}
}
하나가 아이 컴퍼넌트 클릭의 :
내가 가지고있는 다음과 같은 두 가지 구성 요소
부모가 값을 업데이트 함 이자형. 내가 더 부모 구성 요소가있을 때그러나 그들은 모두 같은 차일을 듣고 :
<!-- Parent 1 -->
<parent-component>
<child-component value="foo"></child-component>
<child-component value="bar"></child-component>
</parent-component>
<!-- Parent 2 -->
<parent-component>
<child-component value="herp"></child-component>
<child-component value="derp"></child-component>
</parent-component>
내가 상위 1 두 부모 구성 요소의 foo는 아이 요소를 클릭하면 'foo는'자신의 값을 변경합니다.
나는 이미 emit, broadcast로 연주 해 보았습니다. 나는 방송이 거품 노드를 아래쪽으로 거품을 내며 거품을 내뿜는 것을 안다. 나는 또한 usind "scope.createChild()"시도했지만 뭔가 놓친 것 같아요.
부모에게만 보이고 자식에게는 보이게 범위를 만들 수 있습니까? 또는 브로드 캐스트를 올바르게 사용하는 방법은 무엇입니까?
내가 문서를 이해
바로 내가 아이 구성 요소의 발광()하지 parentNode.broadcast()를 사용해야하지만 난 그것을
angulardart-1.0에서 ChildComponent (this._p); 'package : angular/core_dom/view_factory.dart': 실패한 어설 션 : 행 53 pos 12 : 'scope! = null'이 참이 아닙니다. – Slemgrim