在Angular加载完所有视图后运行Javascript。

17 浏览
0 Comments

在Angular加载完所有视图后运行Javascript。

我正在使用Angular构建一个Web应用程序,并且我正在寻找一种方法来等待所有的data-ng-include元素被评估和包含加载完成。例如,菜单是一个被加载的视图,每个页面的主要内容也是如此,因此至少有两个data-ng-include需要被评估和加载。除此之外,菜单包含了嵌套的data-ng-repeat,用于构建菜单。我需要在所有这些包含和其中任何的angular函数都被加载和DOM实际准备好之后才能触发脚本。

是否有任何事件在Angular设置页面完成时被触发?

AngularJS的实现是基本的,我们基本上只是使用它进行模板化,通过使用data-ng-include。每个页面是一个视图(不是Angular视图,只是一个HTML文件),通过data-ng-include加载,头部和底部分别位于其上下方。头部还动态加载一个全局视图(再次不是Angular视图)的HTML文件,其中包含angular。

到目前为止,菜单是唯一使用AngularJS进行除模板化之外的任何功能的东西。它使用它来创建一个菜单,该菜单使用由JSP动态生成并插入到从服务器返回的DOM中的JSON对象。

为了使前端开发人员的工作更加简单,任何重复的JavaScript功能都被编写成模块,并在页面加载时检测到并使用元素上的data-features属性进行动态加载。

例如,你可以有。在页面加载时,检测到带有data-features属性的每个元素,并加载关联的JS模块,在这种情况下,我们将加载/scripts/modules/subMenu.js

我需要的是一种方式来延迟运行此功能检测和附加,直到来自包含或其他angular函数的所有元素都在页面上并准备好被操作,特别是因为可能在这些包含中存在具有data-features属性的元素。

其他地方的某人曾经提到在body上放置一个控制器,并在其内部什么都不放,只有:

$scope.$on('$viewContentLoaded', function() {
    // 在这里初始化功能
});

但是这并没有起作用,所以我在这里寻找其他选项。

最后,我选择了Theo在这个问题上的解决方案:发送事件当Angular.js加载完成时

0