이건에 대해 간단한 질문 하나 있습니다.
TLT에서 흥미로운 부분을 발견했습니다:
여기서는 모델이 전달되지 않습니다.
그런데도 이렇게 할 수 있습니다:
여기서 사용되고 있으므로 모델 속성을 전달하는 안정적인 전략이라고 가정할 수밖에 없습니다. 주의할 점이 있나요?
이러한 플러그인 아웃렛이 유용하지 않게 느껴졌던 이유 중 하나는 관련 모델을 명시적으로 전달하지 않는 경우가 많기 때문이었습니다.
이 패턴이 어디에 문서화되어 있나요? Ember 가이드에서는 본 적이 없습니다…
david
(David Taylor)
2
‘raw’ 시스템은 디스커스에 특화된 기능이기 때문에 Ember 가이드에서 관련 내용을 찾을 수 없습니다.
코어 코드에서 꽤 의도적으로 사용되고 있는 것으로 보이므로, 안전하게 사용할 수 있다고 생각합니다:
실제로 raw 아웃렛은 일반 plugin-outlet에서 볼 수 있는 'args’와 같은 것을 전달할 수 있는 기능이 없어 보입니다. 따라서 context를 사용하는 것이 유일한 방법입니다.
일반 플러그인 아웃렛에 유용한 데이터가 누락되었다고 생각되면 언제든지 코어 PR을 만들어 주세요. 아웃렛에 새로운 인수를 추가하는 것은 비교적 안전하고, 하위 호환성이 있으며, 성능 영향도 미미하므로 거절될 가능성은 낮습니다.
JQ331
3
플러그인 아웃렛으로 인자를 전달하는 것에서도 어려움을 겪었습니다. 제 목표는 페이지에 플러그인 아웃렛을 배치하고, 해당 페이지에서 다른 컴포넌트 리퍼런스가 접근하는 모든 정보에 아웃렛도 접근할 수 있도록 하는 것이었습니다.
현재 코딩 중인 테마 컴포넌트에서 다음을 시도해 보았습니다:
{{~raw-plugin-outlet name="cool-outlet" args=(hash model=model)}}
하지만 Compile Error: raw-plugin-outlet is not a helper라는 오류가 발생합니다.
이 기능을 정상적으로 작동시키기 위해 추가로 해야 할 일이 있을까요?
david
(David Taylor)
4
raw-plugin-outlet은 ‘raw’ 템플릿(.hbr로 끝나는 템플릿) 내에서만 사용할 수 있습니다. 일반 Ember 템플릿의 경우 {{plugin-outlet ...}}를 사용해야 합니다.
JQ331
5
수정: 아래 내용은 별도의 주제로 다루는 것이 더 좋을 것 같다는 생각이 들었습니다. 또한 제가 겪고 있는 주요 문제가 컴포넌트의 액션을 플러그인 아울렛으로 가져오는 것임을 깨달았습니다. 이 문제에 대해 여기서 질문을 했습니다:
플러그인 아울렛에 인수를 성공적으로 전달하는 더 간단하거나 표준적인 방법이 있을까요?
예를 들어:
템플릿에 다음과 같은 composer-action-title 컴포넌트에 대한 참조가 있다고 가정해 보겠습니다:
composer.hbs:
{{composer-action-title
model=model
openComposer=(action "openComposer")
closeComposer=(action "closeComposer")
canWhisper=canWhisper
tabindex=8
}}
그리고 제가 플러그인 아울렛을 추가하려고 하는데, 그 플러그인 아울렛 안에서 위와 동일한 코드가 있도록 하고 싶습니다:
connectors/cool-outlet/cool-outlet.hbs:
{{composer-action-title
model=model
openComposer=(action "openComposer")
closeComposer=(action "closeComposer")
canWhisper=canWhisper
tabindex=8
}}
제 cool-outlet 플러그인 아울렛이 composer-action-title 컴포넌트를 성공적으로 참조할 수 있도록 하기 위해 무엇을 해야 하나요?
composer.hbs에서 다음과 같은 참조를 사용하는 것은 작동하지 않는 것 같습니다:
{{plugin-outlet name="cool-outlet" args=(hash model=model)}}