2013-05-01 46 views
2

情態動詞都轉向了比我想象的還要困難:/迪朗達爾模態不會關閉

得到了模態裝載了一個視圖/視圖模態正常,點擊保存按鈕保存的信息(我得到一個'從Q.js'應該是空的:[]',但顯然這不是問題?)我遇到的問題可能與承諾有關,但如果是我無法找到它。

家長視圖模型 -

​​

模態的視圖模型 -

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是假的,讓我關閉它,一切就好了被禁用的,但不應該是必要的,對不對?

+0

你確定''this'在'complete()'仍然是你的vm上下文嗎?嘗試'var self = this;'在save()和complete()'self.modal.close(...)的頂部'' – RainerAtSpirit 2013-05-01 18:17:13

+0

就是這樣。如果你能做出這個答案,我會接受謝謝Rainer。 – 2013-05-01 18:33:02

回答

4

每請求:

你肯定thiscomplete()仍然是你的VM上下文?嘗試var self=this;在save()和complete()的頂部self.modal.close(...)

+0

這是解決方案。我試圖從一個變量內的一個函數內調用它,即使它沒有問題但沒有告訴模態關閉。 – 2013-05-01 20:44:47