AngularMaterial의 $ mdDialog 서비스를 사용 중입니다.콜백 onRemoving에서 버튼 값 가져 오기
var highlighter = {};
$mdDialog.show({
templateUrl: 'sample.html',
parent: angular.element(document.body),
clickOutsideToClose: true,
bindToController: true,
onRemoving: function (event, removePromise) {
if(highlighter.answer!==1) {
//Do something here
}
highlighter.answer = undefined;
}
})
.then(function (answer) {
highlighter.answer = answer;
});
show()
메소드에 의해 반환되는 약속을 mdDialog의 버튼 중 하나를 클릭 할 경우에만 해결합니다 - 여기에 내가 사용하고있는 샘플 코드입니다. 버튼 인덱스는 answer
매개 변수로 제공됩니다. 대답/단추 인덱스가 1이 아닌 경우에만 작업해야합니다. highlighter.answer
은 버튼을 클릭 할 때 약속을 해결하기 전에 onRemoving이 호출되므로 문제가 발생했을 때 highlighter.answer
에 적절한 값을 얻지 못했습니다. 필요한 (OnRemoving 콜백에서).
즉, 버튼을 클릭하지 않고 대화 상자가 닫히거나 버튼이 호출 될 때마다 onRemoving가 호출됩니다. 약속은 버튼을 클릭 할 때만 해결됩니다.
내 질문에, 거기에 약속 값을 확인한 후 호출됩니다 모든 콜백을 가질 수있는 방법입니다, 그래서 대답 값이 설정되어 있고 단추가 호출되는지 여부를 알 수 있습니다. 이 콜백은 약속이 해결되었는지 여부에 관계없이 대화 상자를 제거 할 때 호출되어야합니다.
닫기/닫기 버튼이없는 대화 상자를 만드는 것이 더 간단하지 않습니까? 나는 당신이 사용하고있는 라이브러리를 모르지만 나는 어딘가에 그 옵션을 가지고 있다고 확신한다. 또 다른 옵션은 대답이 선택 될 때까지 대화 상자를 다시 던지는 것입니다. – Halcyon
@Halcyon 외부의 클릭만으로 Dislog가 해제 될 수 있다는 것은 확실하지 않으므로 Dismiss 버튼이 필요합니다. 두 번째 제안은 잘못된 UX 디자인과 비슷합니다. – noob