首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当我有一个断点时,我的angular1.6控制器没有正确地绑定

为什么当我有一个断点时,我的angular1.6控制器没有正确地绑定
EN

Stack Overflow用户
提问于 2017-09-21 03:24:31
回答 1查看 50关注 0票数 2
代码语言:javascript
复制
HB.Core.Directives.directive('hbMultiselect', [
    function() {
        return {
            restrict: 'E',
            templateUrl: '/hb-core/library/directives/hb-multiselect/hb-multiselect-ptl.html',
            scope: {},
            controllerAs: '$ctrl',
            bindToController: {
                optionsData: '<',
                optionsSelected: '=',
                allSubtypesSelected: '='
            },
            controller: function() {
                var $ctrl = this;

                // $ctrl.$onInit = function() {
                //     console.log(this); // Tried this... didn't work either
                // };

                function init() {
                    $ctrl.isExpanded = false;
                    $ctrl.optionsDisplay = [];
                    $ctrl.tags = [];
                    console.log("------")
                    console.log($ctrl);
                    console.log("------")     
>>>>>>>>>>>>>>>>>>>>**BREAK POINT HERE**                   
                }
                init();
            }
        };
    }
]);

当我在没有的情况下运行代码(一个断点)时,我得到以下信息

绑定optionsDataoptionsSelected和allSubtypesSelected` `都按预期工作。但是由于某种原因,当我在代码中放置一个断点(在上面的代码中指定)时,我得到以下信息

我什么都没变!我的代码无法工作,因为当我调试到代码中时,$ctrl.optionsData是未定义的,但我不知道为什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-21 03:32:00

您可以使用AngularJS的$onInit()来代替从控制器函数调用init。

init()函数是在角有机会设置传入的变量/绑定之前调用的。在您的init函数中的任何断点都将发生在控制器完全初始化之前。

来自AngularJS文档:

$onInit() -在元素上的所有控制器被构造并初始化它们的绑定之后(以及在该元素的指令的预-后链接函数之前)调用每个控制器。这是一个为您的控制器放置初始化代码的好地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46334978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档