조동사가 내가 생각했던 것보다 더 어려운 것으로 밝혀 의존하고 닫습니다하지 않음 :/Durandal 모달
모달 로딩 최대 뷰/뷰가 제대로 모달 (가) 버튼을 눌러 정보를 저장 저장을 클릭있어 (난을받을 수 있나요 '비워야합니다 : Q.js에서 []'하지만 분명히 이것은 문제가되지 않습니까?) 문제는 제가 약속과 관련이 있을지 모르지만 찾을 수없는 경우입니다.
부모의 뷰 모델 -
var createNew = function() {
app.showModal(tfcreate).then(function (modalResult) {
if (!modalResult) { return false; }
var templateId = modalResult;
router.replaceLocation('#/templateformedit/' + templateId);
});
};
모달의 뷰 모델 -
var cancel = function() {
this.modal.close(false);
};
var save = function() {
isSaving(true);
setRevisionInfo();
datacontext.saveChanges()
.then(alertMe)
.fail(initFailed)
.fin(complete);
function setRevisionInfo() {
templateForm().revisionLevel(1);
templateForm().createdById(shell.currentUser().id());
templateForm().lastRevisedId(shell.currentUser().id());
var nowDT = moment().format('LL');
templateForm().lastRevisedDT(nowDT);
templateForm().createdDT(nowDT);
}
function alertMe() {
return console.log('done'); // <<< This is firing ok
}
function complete() {
isSaving(false);
this.modal.close(templateForm().id()); // <<< Breakpoint reaches here just fine
}
};
나는 그것이 잘 닫습니다) (취소 다시 바인딩 취소 버튼을 누르면 경우 저장 버튼을 클릭하여 save()를 클릭하고 객체를 올바르게 저장하고 모든 중단 점에 도달하지만 절대로 닫지 않습니다. 저장 한 후에 취소를 누르면 다시 닫힙니다. complete() 함수를 호출하는 동안 cancel()을 호출 해 보았습니다. 문에 도달했지만 다시 닫히지 않습니다. 어떤 아이디어 ???
참고 : 모달에서 router.replaceLocation을 호출 할 수 있으며보기가 잘 변경되지만 모달은 다음보기로 유지됩니다.
편집 : isSaving이 끝나고 hasChanges가 false가 될 때까지 사용할 수있는 '닫기'단추를 추가 했으므로이 단추를 닫으면 모든 것이 정상적으로 닫히지 만 꼭 필요한 것은 아닙니다. 요청에 따라
'complete()'의'this'가 여전히 당신의 VM 컨텍스트라고 확신합니까? save()와 complete()'self.modal.close (...) '의 상단에서'var self = this;'를 시도하십시오. – RainerAtSpirit
그럴 것입니다. 이 답변을 할 수 있다면 감사의 말씀을 전합니다. –