因此,一個$範圍功能,我有兩個單頁的應用程序,這兩個應用程序都包含項目的列表,在Application A
我們有List A
,並在Application B
我們有List B
。打開新窗口,運行在該窗口中,更好的辦法
在List A
的物品可以是用於項目父在List B
,一對多的關係。
如果用戶點擊App A
一個項目,他得到選項view related items
,這將在單獨的窗口(新標籤)開拓App B
,並在App A
過濾List B
,只顯示相關項目的點擊項目。
這意味着我必須打開一個新窗口,並在該窗口準備就緒時運行一個函數,並通過點擊項目的ID
來過濾我的列表。
$scope.openNewWindow = function(id){
var popup = window.open('newPageUrl');
// check to see when opened page is ready
var readyStateCheckInterval = setInterval(function() {
if (popup.document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
// function on App B
popup.functionToRunWhenReady(id);
}
}, 50);
};
功能,functionToRunWhenReady()
是一個JavaScript功能,並具備運行實際功能來過濾我的名單,這是一個$scope
功能,原因是我無法從我的其他應用程序訪問$scope
功能
function functionToRunWhenReady(id) {
angular.element(document).ready(function() {
var scope = angular.element($('#myAppDiv')).scope();
scope.$apply(function() {
// scope function to filter the list
scope.setFilter(id);
});
});
}
正如你可以在這裏看到我檢查document
準備好了,通過做var scope = angular.element($('#myAppDiv')).scope();
訪問scope
,然後運行我setFilter(id)
功能
這有效,但我不能相信這是最好的方式去做這件事。
tl; dr我該如何打開一個新窗口,然後在新應用程序上運行$ scope函數,這種方式並不是不好的做法?
編輯:我看到人們所提出的建議$routeparams
,但我真的不知道如何工作的,或者如果它在我的應用程序工作(他們都是單頁的應用程序),那這樣進一步說明會是偉大的
難道你不能將這兩個頁面分成一個角度應用程序? – Chinni
@Chinni這是我的第一個方法,但第二個應用程序被廣泛使用,並且只在某些情況下是與第一個應用程序中的列表相關的項目 – klskl