在Angular完成加载所有视图之后运行Javascript
我正在使用Angular构建Web应用程序,并且试图找到一种方法来等待所有data-ng-
include元素都经过评估并且包括完成加载。例如,菜单是一个已加载的视图,每个页面的主要内容也是如此,因此至少有两个data-ng-
includes被评估并加载。最重要的是菜单包含嵌套data-ng-
repeats,它们构成了我的菜单。在所有这些包含项以及其中的所有角度函数均已加载并且DOM已准备就绪之后,我需要一种启动脚本的方法。
Angular完成页面设置后,是否会触发任何事件?
AnguarJS的实现是基本的,我们基本上是通过使用data-ng-
include将其用于模板。每个页面都是一个视图(不是角度视图,只是一个html文件),是通过data-ng-
include加载的,页眉和页脚位于其上方和下方。标头还动态加载包含角度的全局视图(同样不是角度视图)html文件。
到目前为止,菜单是使用AngularJS进行模板以外的唯一工作。它使用它来创建菜单,该菜单使用由JSP动态生成并插入到从服务器返回的DOM中的JSON对象。
为了使前端人员的工作更轻松,任何重复的JavaScript功能都被编码到模块中,这些模块会在页面加载时进行检测,并使用需要附加JavaScript功能的元素上的data-
features属性动态加载至。
例如,您可能有<div id="mySubMenu" data-
features="subMenu"></div>。在页面加载时,将检测到每个具有data-
features元素的元素,并加载关联的JS模块,在这种情况下,我们将加载/scripts/modules/subMenu.js
。
我需要的是一种延迟运行此功能检测和附加功能的方法,直到由包含或其他角度函数产生的所有元素都在页面上并准备好进行操作为止,尤其是因为那些元素中可能包含具有数据功能属性的元素包含。
其他人曾提到将控制器放在身体上,而没有将身体的一侧放进去,但:
$scope.$on('$viewContentLoaded', function() { // Init Features Here
});
那没有用,所以我在这里寻找其他选择。
回答:
我认为适当的答案是“否”。您必须更改查看应用程序和模型的方式,并使其适应“角度方式”。很可能有一种更健康的方式来实现您所需要的。如果您需要将事件附加到元素上,则可能要使用指令,但是我目前没有足够的信息来判断什么是最佳方法。
与指令一起使用angular.module是一个不错的选择。
这是一个关于如何与JQUERY插件一起使用的简单演示:
http://plnkr.co/edit/WGdNEM?p=preview
这是一个在单独文件上带有指令的示例:
http://plnkr.co/edit/YNBSWPLeWqsfGvOTwsMB?p=preview
以上是 在Angular完成加载所有视图之后运行Javascript 的全部内容, 来源链接: utcz.com/qa/397328.html