javascript – 打开新窗口,在该窗口中运行$scope函数,这是一种更好的方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 打开新窗口,在该窗口中运行$scope函数,这是一种更好的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1588字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 打开新窗口,在该窗口中运行$scope函数,这是一种更好的方法](/upload/InfoBanner/zyjiaocheng/805/770650bc2ca74c3093d178b244f07592.jpg)
所以,我有两个单页面应用程序,这两个应用程序都包含项目列表,在应用程序A中我们有列表A,在应用程序B中我们有列表B.
列表A中的项目可以是列表B中项目的父项,一对多关系.
如果用户单击App A中的项目,他将获得查看相关项目的选项,这将在单独的窗口(新选项卡)中打开App B,并过滤列表B以仅显示App A中所单击项目的相关项目.
这意味着我必须打开一个新窗口,并在该窗口准备就绪时运行一个函数,并传递所单击项目的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);
});
});
}
正如您在此处所见,我检查文档是否准备就绪,通过执行var scope = angular.element($(‘#myAppDiv’))来访问范围.scope();然后运行我的setFilter(id)函数
这有效,但我无法相信这是解决这个问题的最好方法.
tl; dr如何打开一个新窗口,然后在新应用程序上运行$scope函数,这是一种不错的做法?
编辑:我看到人们建议$routeparams,但我真的不知道它是如何工作的,或者它是否适用于我的应用程序(它们都是单页应用程序),因此对此进一步说明会很好
解决方法:
将ID作为GET参数发送到应用程序B.然后,您可以使用$routeParams直接在控制器中访问它,而不会有任何延迟.
内容总结
以上是互联网集市为您收集整理的javascript – 打开新窗口,在该窗口中运行$scope函数,这是一种更好的方法全部内容,希望文章能够帮你解决javascript – 打开新窗口,在该窗口中运行$scope函数,这是一种更好的方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。