가장 좋은 방법은 처리 중에 버튼을 비활성화하고 완료되면 다시 활성화하는 것입니다. 이는 예상보다 오래 걸리면 사용자에게 적절한 피드백을 제공합니다.
수동으로 모두 설정하는 대신 데이터 바인딩을 통해 설정을 해제 할 수 있습니다.
HTML
<button id="button1" data-win-bind="disabled: disabled">Click</button>
<button id="button2" data-win-bind="disabled: disabled">Click</button>
<button id="button3" data-win-bind="disabled: disabled">Click</button>
<button id="button4" data-win-bind="disabled: disabled">Click</button>
자바 스크립트
var bindingSource;
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize
// your application here.
} else {
// TODO: This application has been reactivated from suspension.
// Restore application state here.
}
args.setPromise(WinJS.UI.processAll());
var disabledContext = { disabled: false }
var btn = document.getElementById("button1");
btn.addEventListener("click", buttonClickHandler, false);
WinJS.Binding.processAll(btn, disabledContext);
btn = document.getElementById("button2");
btn.addEventListener("click", buttonClickHandler, false);
WinJS.Binding.processAll(btn, disabledContext);
btn = document.getElementById("button3");
btn.addEventListener("click", buttonClickHandler, false);
WinJS.Binding.processAll(btn, disabledContext);
btn = document.getElementById("button4");
btn.addEventListener("click", buttonClickHandler, false);
WinJS.Binding.processAll(btn, disabledContext);
bindingSource = WinJS.Binding.as(disabledContext);
}
};
function buttonClickHandler(eventInfo) {
bindingSource.disabled = true
WinJS.Promise.timeout(5000).then(function (c) {
bindingSource.disabled = false
});
}
--Rob
당신은 모든 버튼을 계속하기 전에 확인 "ProcessingValue"로 누를 때마다 설정되는 변수가 있을까요? –
안녕하세요, 이것은 우리가 찾고있는 제안 중 하나입니다. 단점은 응용 프로그램의 여러 영역에서 동일한 코드를 여러 번 작성해야하거나 재정의 할 방법이 필요하다는 것입니다 addEventListener를 호출하고 모든 기본 리스너 함수가 약속을 반환하도록하기 때문에 완료 후 'processingvalue'를 다시 설정할 수 있습니다. – dougajmcdonald