因此,一个$范围功能,我有两个单页的应用程序,这两个应用程序都包含项目的列表,在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