2017-04-05 57 views
0

我在ASP.Net中有一個母版頁,它通過AJAX下載各種文件,併爲庫執行一些初始化工作,我正在使用, 之後。我使用jQuery的$ .when()。then語法。jQuery和ASP.NET:母版頁完成初始化後執行站點代碼

我的個人頁面需要在執行代碼之前完成所有設置。現在,我在我的頁面上使用$(function(){})語法。問題在於,它在頁面呈現後立即執行,但在我的when.then構造完成之前很久。

有沒有辦法等待那個構造?我可以以某種方式在初始化後從我的母版頁代碼中激發自定義事件,並將我的內容頁面函數附加到該代碼中?還是有更好的解決方案? PS:爲了說清楚,我們在這裏只討論客戶端代碼!

+1

我看到你正在使用JS承諾。你能發佈正在執行的代碼嗎? –

回答

2

請勿將文件包裝在準備好的文件$(function() {})中,而是包含在自定義事件中。

$(document).on('mycustom',function() {}); 

然後觸發,在then

$.when().then(something).then(function(){$(document).trigger("mycustom");}); 
+0

您會說些什麼?使用自定義事件(如您所建議的)還是使用@david提供的解決方案更好?同樣的問題,大衛。 –

+0

我也喜歡那個;更多是選擇的問題,但是這個問題直接解決了問題,即「序列發生後的自定義事件」;你甚至可能有兩者的組合。 –

+0

請注意,一個不同之處在於,您可能隨後在稍後觸發此事件,而不是如上所述針對此問題。 –

2

在可以將時/然後鏈條設置爲變量主頁,並繼續鏈它在詳細信息頁面。畢竟,它們是一個客戶端頁面。所以只要最初的鏈條首先出現,你可以追加所有你喜歡的東西。

所以,你可能第一鏈設置爲變量:

var eventChain = $.when(/.../).then(/.../); 

那麼在細節頁面:

eventChain.then(/.../); 

所以詳細頁面其實只是拿起其中離開母版頁。

+0

非常感謝。你如何看待馬克的建議?哪個更好? –

+0

@AndréR.:我猜想的問題。兩者都應該這樣做。目前的問題幾乎沒有什麼區別,但是如果需要考慮的話,每種方法都會提供不同的方法來進一步擴展行爲。 – David

+0

你的意思是因爲多個功能可以訂閱該事件? –