2016-01-06 12 views
0

我一直在嘗試重新定位Durandal對話框但沒有成功。我使用的代碼如下所示:Durandal對話框重新定位不起作用

this.compositionComplete = function (child, parent, context) { 
    dialog.getContext().reposition(child); 
}; 

這是我的對話模型中的compositionComplete()函數。

一旦被調用,它不會發生錯誤,它不會執行任何操作,對話框也不會重新定位。

我在做什麼錯?我試圖按照Durandal的文檔:http://durandaljs.com/documentation/Showing-Message-Boxes-And-Modals.html

+0

很難分辨您提供的信息有多少。你能提供一些關於「對話框」是什麼的更多的上下文,或者「孩子」甚至有價值嗎? –

+0

這是Durandal框架的一部分。 compositionComplete()函數在創建對話框時由Durandal框架調用。這有點像C#中的重寫方法。 Durandal將其稱爲框架生命週期的一部分。 我不確定孩子的輸入是什麼。我嘗試按照Durandal文檔中的說明操作:http://durandaljs.com/documentation/Showing-Message-Boxes-And-Modals.html – Andrew

+0

@Andrew只有自定義對話框上下文有一個'compositionComplete'鉤子。您的對話是否使用自定義對話框上下文?或者你的意思是說這個鉤子在你的視圖模型上? – Brett

回答

0

Dialog.getContext()返回默認上下文,而不是您的自定義上下文。

如果你真的是使用自定義的對話情境,試試這個樣本compositionComplete方法代替:

this.compositionComplete = function (child, parent, context) { 

    var dialogModel = dialog.getDialog(this); 
    dialogModel.context.reposition(child); 

} 

在這個版本中,你得到的對話模型視圖模型。它是一個包含對話相關屬性和方法的對象。

在下一行中,您將通過對話框模型在您的自定義上下文中調用「重新定位」。