내 Aurelia 템플릿 중 하나에 비동기 값을 바인딩하려고합니다. 분명히 얻은 것은 모두 [object Promise]
입니다.Aurelia의 비동기 바인딩
나는 무척 다음과 같습니다 바인딩 동작을 사용하여이 문제를 해결하는 방법에 대해 설명이 문서 http://www.sobell.net/aurelia-async-bindings/을 발견 :
약속이 문자열 또는 기타 객체 등을 확인할 때이 완벽하게 작동// http://www.sobell.net/aurelia-async-bindings/
export class asyncBindingBehavior {
bind (binding, source) {
binding.originalUpdateTarget = binding.updateTarget;
binding.updateTarget = a => {
if (typeof a.then === 'function') {
binding.originalUpdateTarget('...');
a.then(d => {
binding.originalUpdateTarget(d);
});
}
else {
binding.originalUpdateTarget(a);
}
};
}
unbind (binding) {
binding.updateTarget = binding.originalUpdateTarget;
binding.originalUpdateTarget = null;
}
}
변하기 쉬운.
하지만 내 약속이 객체로 해결되면 어떻게 될까요? 객체 안에 필요한 속성에 액세스하려면 어떻게해야합니까?
내 템플릿의 내부에 ${object.property & async}
이있는 경우 실패하므로 object.property
은 (는) object
으로 만 실패합니다.
async
에 인수로 속성을 지정할 수있는 해킹의 비트를 추가 :
${object & async:'property'}
과 같은 내 바인딩 동작을 업데이트 :
// http://www.sobell.net/aurelia-async-bindings/
export class asyncBindingBehavior {
bind (binding, source, property) {
binding.originalUpdateTarget = binding.updateTarget;
binding.updateTarget = a => {
if (typeof a.then === 'function') {
binding.originalUpdateTarget('...');
a.then(d => {
if (property) {
binding.originalUpdateTarget(d[property]);
}
else {
binding.originalUpdateTarget(d);
}
});
}
else {
binding.originalUpdateTarget(a);
}
};
}
unbind (binding) {
binding.updateTarget = binding.originalUpdateTarget;
binding.originalUpdateTarget = null;
}
}
을하지만이 아주 많이 같은 느낌 나를 해킹하고 또한 object.parent.child
과 같은 더 깊은 속성에 액세스 할 수 없게됩니다.
또한 getValue
메서드를 사용하는 GitHub : https://github.com/aurelia/templating/issues/81에서이 문제가 발견되었습니다. 나는이 방법에 대해 들어 본 적이 없으므로 사용하지 않으려 고 노력하므로 어떻게 작동하는지 잘 모르겠습니다 ...
아이디어가 있으십니까?
음, 무슨 뜻인지 알 겠어. 나는 필자가 원하는 가치를 추출하고자하는 모든 것을 할 수 있기 때문에 함수가 더 이해할 수있을 것이라고 생각한다. 그러나 이것을 실제로하는 것이 가장 좋은 방법입니까? 이상적으로는'$ {object.property & async} '와 같은 것을 _love_합니다. 아마도 나는 어떻게해서든지 '속성'에서'객체'까지 "걸을 수 있습니까?" – powerbuoy
"dot.separated.property.string",'.split ('.')'을 전달하면 연관성을 분석하여'd [ "dots"] [ "separated"] [ "property" ] [ "string"]'그러나 그것은 확실히 기능 (들)보다 덜 유연하고 틀림없이 더 지저분합니다. –
좋아요,이 질문을 좀 더 길게 남겨두고 더 이상 제안 사항이 있는지 확인하겠습니다. – powerbuoy