exports 객체의 값은 UiComponent 인스턴스의 이름과 속성으로 ':'으로 구분되어야합니다 (예 :) checkout.cart.total:title
.
내보내기 대상 이름에는 UI 구성 요소 "namespace"가 포함되어야합니다.
예제에서 값을 문자열로 설정하면 내보내기 소스 인 UiComponent의 특성으로 해석됩니다. 내보내기는 유효한 내보내기 대상이 아니기 때문에 검사 할 때 정의되지 않습니다.
다음은 작동하는 예입니다.
defaults: {
exportTarget: "foo.bar",
exportTargetProperty: "showMessage",
tracks: {
shouldShowMessage: true
},
exports: {
shouldShowMessage: '${$.exportTarget}:${$.exportTargetProperty}'
}
}
...
위의 값은 shouldShowMessage
속성 값을 값이 바뀔 때마다 showMessage
전체 이름을 가진 UiComponent 속성 에 복사합니다 foo.bar
.
이로 인해 대상 속성을 KO 관찰 가능하게 자동으로 만들지는 않습니다. 값을 변경하면 KO가 해당 속성에 액세스하는 DOM 노드를 다시 렌더링하도록 트리거해야하는 경우 명시 적으로 선언해야합니다.
그건 그렇고, 객체에 추가 shouldShowMessage
하면 tracks
자동으로 ko-es5를 관찰 할 수 있습니다. 리터럴을 사용하는 것도 ko.observable()
효과가 있습니다.
위의 예에서 exportTarget
및 exportTargetProperty
은에 구성되어 있습니다 defaults
. 또한 JSON에서 UiComponent 옵션의 일부로 지정할 수도 있습니다. 이는 UiComponent 이름을 포함하여 UiComponent 계층이 정의 된 위치이므로 일반적으로 더 의미가 있습니다.
마지막으로, 필자는 개인적으로 값 객체를 사용하여 다른 UI 구성 요소에 값을 전달하는 솔루션이 내보내기 또는 가져 오기를 사용하는 것보다 낫다고 생각합니다. 내 경험상 DOM 또는 UiComponents에서 공유 상태를 유지하는 것은 가장 간단한 경우를 제외하고는 스파게티 OOP의 레시피입니다.