访问组件控制器中的角度组件参数

Posted

技术标签:

【中文标题】访问组件控制器中的角度组件参数【英文标题】:accessing angular component parameters in the component's controller 【发布时间】:2017-05-21 17:34:02 【问题描述】:

我在访问组件控制器中的组件参数时遇到问题。

(function() 
'use strict';

angular.module('myapp')
    .component('myComponent', 
        bindings: 
            name: '='
        ,
        template: `<div>$ctrl.name</div>`,
        controller: function () 
            console.log(this.name); //displays undefined
        
    );
());

<my-component name="'mytest'"></my-component>

这会在页面上输出“mytest”,因此模板中的 $ctrl.name 确实有效。但是,当我尝试 console.log 控制器中的变量时,我得到了“未定义”。

谢谢

【问题讨论】:

如果是我,我会选择单独定义控制器函数作为最佳实践,而不必担心这样的副作用。 plnkr.co/edit/iFTbXc49tqiSFHMvMNNL?p=preview 你的代码有效 它适用于 plunker 但不适用于我的 gulp/browsersync 环境 【参考方案1】:

我可以通过向组件的控制器添加 $doCheck 挂钩来解决此问题

angular.module('myapp')
    .component('myComponent', 
        bindings: 
            name: '='
        ,
        template: `<div>$ctrl.name</div>`,
        controller: function () 
            console.log(this.name); //displays undefined

            this.$doCheck = function() 
                console.log(this.name); //works
            ;
        
    );
());

【讨论】:

以上是关于访问组件控制器中的角度组件参数的主要内容,如果未能解决你的问题,请参考以下文章

如何将一些字符串或数据从 API 传递到角度 6 中的角度组件?

当我进入另一个组件(角度2/4/5)的主题调用的订阅方法时,为什么我在控制台中看不到我的根变量组件?

角度组件、服务和控制器如何工作

角度组件 - 如何避免嵌套组件

离子,角度,显示或禁用控制器内的组件

从角度组件获取数据