我有一個帶有"Start Portal"
按鈕的網頁和位於其下的iframe(在同一網頁上),其ID爲:MyFrame
。IFrame中的AngularJS run()方法在iframe重新加載時不會重新運行
我使用jQuery AJAX獲取基於angularjs的門戶網站的URL,並設置我的iframe的src。下面給出了加載基於angularjs的門戶的代碼。 'portalURL
'參數包含URL。
$.ajax({
method: 'post',
crossDomain: true,
contentType: "application/json; charset=utf-8",
url: webmethodurl,
data: {},
dataType: "jsonp",
jsonp: "JSONCallback",
success: function(portalURL){
$('#MyFrame').attr('src',portalURL);
},
error: function(e){
console.log(e);
}
});
這工作正常,我的AngularJS門戶在iframe中正常打開。
但是,如果我再次單擊"Start Portal"
按鈕,將調用相同的AJAX代碼,然後再次獲取AngularJS門戶網站URL並重新加載。這工作正常,但有1個問題。
我已經寫在AngilarJS run()
方法的一些驗證碼:
//Some initializing code before Angular invokes controllers
MyApp.run(['$rootScope', function($rootScope) {
ValidateSession(); //1. First validate the session
}]);
function ValidateSession(){
//this does some validation checks
}
現在,我的問題是,這種run()
方法只當我點擊"Start Portal"
首次調用。在隨後的點擊中,它會從服務器端重新加載帶有Portal URL的iframe,但不會再次調用angularjs run()
方法。
我試圖手動引導角度的應用程序,但無法正常工作。
不知何故,我想殺死或重新加載整個angularjs應用程序,如果它是以前加載並啓動新鮮,每當iframe加載我的angularjs門戶。
我無法對iframe代碼進行任何修改,就像在我的客戶的網站上進行生產一樣。我只需要向他們提供angularjs門戶網址,他們將使用我使用的類似方法加載它們。
它似乎工作正常http://plnkr.co/edit/VT5DUXgYN0ppXkJgaLvC?p=preview(檢查控制檯,看看它的工作)。我還嘗試在我的PC上運行1個更多的域名,但仍無法重現問題。你使用的是什麼瀏覽器? –