我有一个angularjs组件,它有一个模板,一个控制器,一些绑定,一些被转换的部分。
我将此组件及其属性放在我的DOM中:
<mycomponent attr1="x" attr2="y"></mycomponent>
组件的控制器和/或组件的模板将使用这些属性值在某处进行转换。
我需要在组件完全创建之后运行一个函数,即它已经在DOM上创建了模板和所有被转换的元素都有被赋予了价值。
我怎样才能做到这一点?我尝试将函数放在控制器的$ postLink()钩子中,但是当$ postLink()触发时,我发现转换还没有运行。
此外,我不想乱用组件的控制器,因为组件非常通用,我把它放在DOM的几个地方,只有其中一个应该运行这个功能在完成创作之后。
答案 0 :(得分:1)
对于AngularJS 1应用程序,DOM初始化后有两种运行函数的方法:
答案 1 :(得分:1)
在Angular 2中:
ngAfterViewInit()
在Angular初始化组件的视图和子视图后进行响应。 在第一次ngAfterContentChecked()之后调用一次。 仅限组件的挂钩。
Jquery中的:
$( document ).ready(function() {
console.log( "document loaded" );
});
javascript中的:
window.onload(function(){
//here
});
angular1: 中的
angular.element(document).ready(function () {
//content here
});
答案 2 :(得分:0)
来自AngularJS文档中的"Components have a well-defined lifecycle"段落:
$ postLink()-在此控制器的元素及其子元素之后调用 已链接。类似于后链接功能,此钩子可以是 用于设置DOM事件处理程序和直接进行DOM操作。注意 包含 templateUrl 指令的子元素将没有 已被编译并链接,因为他们正在等待其模板 异步加载,他们自己的编译和链接已经 暂停,直到发生这种情况。这个钩子可以被认为类似于 Angular 2中的 ngAfterViewInit 和 ngAfterContentInit 挂钩。 Angular 1中的编译过程非常不同,没有 升级时应直接映射并小心。