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();
}
};
}
]);当我在没有的情况下运行代码(一个断点)时,我得到以下信息

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

我什么都没变!我的代码无法工作,因为当我调试到代码中时,$ctrl.optionsData是未定义的,但我不知道为什么。
发布于 2017-09-21 03:32:00
您可以使用AngularJS的$onInit()来代替从控制器函数调用init。
init()函数是在角有机会设置传入的变量/绑定之前调用的。在您的init函数中的任何断点都将发生在控制器完全初始化之前。
来自AngularJS文档:
$onInit() -在元素上的所有控制器被构造并初始化它们的绑定之后(以及在该元素的指令的预-后链接函数之前)调用每个控制器。这是一个为您的控制器放置初始化代码的好地方。
https://stackoverflow.com/questions/46334978
复制相似问题