Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在组件完全就绪后执行函数_Angularjs_Angularjs Components - Fatal编程技术网

Angularjs 在组件完全就绪后执行函数

Angularjs 在组件完全就绪后执行函数,angularjs,angularjs-components,Angularjs,Angularjs Components,我有一个angularjs组件,它有一个模板、一个控制器、一些绑定和一些转置部分 我将此组件及其属性放在DOM中: <mycomponent attr1="x" attr2="y"></mycomponent> 这些属性值将由组件的控制器和/或组件的模板中使用,以转移到某个地方 在组件完全创建之后,我需要运行一个函数,即在DOM上创建了它的模板,并且所有转包的元素都被赋予了一个值 我怎样才能做到这一点?我尝试将函数放置在控制器的$postLink()钩子中,但是当$

我有一个angularjs组件,它有一个模板、一个控制器、一些绑定和一些转置部分

我将此组件及其属性放在DOM中:

<mycomponent attr1="x" attr2="y"></mycomponent>

这些属性值将由组件的控制器和/或组件的模板中使用,以转移到某个地方

在组件完全创建之后,我需要运行一个函数,即在DOM上创建了它的模板,并且所有转包的元素都被赋予了一个值

我怎样才能做到这一点?我尝试将函数放置在控制器的$postLink()钩子中,但是当$postLink()激发时,我看到转换尚未运行


此外,我不想弄乱组件的控制器,因为组件非常通用,我把它放在DOM中的几个地方,只有其中一个应该在完成创建后运行此函数。

对于AngularJS 1应用程序,有两种方法可以在DOM初始化后运行函数:

  • 您可以使用$timeout而不延迟-$timeout(function(){/*调用您的函数*/})
  • 或者使用Angular的jqLite提供的.ready()

  • 在角度2中:

    $( document ).ready(function() {
            console.log( "document loaded" );
        });
    
    window.onload(function(){
    //here
    });
    
    angular.element(document).ready(function () {
            //content here
        });
    
    ngAfterViewInit()

    Angular初始化零部件视图和子视图后响应。 在第一个ngAfterContentChecked()之后调用一次。 只有组件的挂钩

    在Jquery中:

    $( document ).ready(function() {
            console.log( "document loaded" );
        });
    
    window.onload(function(){
    //here
    });
    
    angular.element(document).ready(function () {
            //content here
        });
    
    在javascript中:

    $( document ).ready(function() {
            console.log( "document loaded" );
        });
    
    window.onload(function(){
    //here
    });
    
    angular.element(document).ready(function () {
            //content here
        });
    
    角度1:

    $( document ).ready(function() {
            console.log( "document loaded" );
        });
    
    window.onload(function(){
    //here
    });
    
    angular.element(document).ready(function () {
            //content here
        });
    
    根据AngularJS文件中的段落:

    $postLink()-在此控制器的元素及其子元素之后调用 已被链接。与post链接功能类似,此挂钩可以 用于设置DOM事件处理程序并执行直接DOM操作。注 包含templateUrl指令的子元素将不具有 已编译并链接,因为它们正在等待模板的更新 异步加载,它们自己的编译和链接已完成 暂停,直到发生这种情况。这个钩子可以被认为类似于 ngAfterViewInitngAfterContentInit在Angular 2中挂钩。自从 在Angular 1中,编译过程非常不同,没有 升级时应直接映射并小心


    我发现AngularJS 1就是这样。没有可使用的生命周期方法或挂钩$onInit不保证组件的视图和子视图已在UI上完成加载,并且$viewContentLoaded未在组件上使用。