指令未正确初始化
Directive not init properly
I 使用 angular-ui-bootsrap 选项卡指令来创建选项卡。但是当我控制台时.log在每个控制器和链接功能上,初始化顺序不正确。
我期待
outer - controller
Inner - Controller
Inner - Link
Inner - Controller
Inner - Link
Inner - Controller
Inner - Link
Inner - Controller
Inner - Link
outer - Link
结果
outer - controller
outer - Link
Inner - Controller
Inner - Link
Inner - Controller
Inner - Link
Inner - Controller
Inner - Link
Inner - Controller
Inner - Link
如您所见,外部指令同时与控制器建立了 init 链接,而不是在初始化内部指令后进行链接。
转到 plunker 并检查控制台。
将链接函数放在$timeout服务中。看褶皱机
// UPD: Add $timeout service
.directive('uibTabset', function($timeout) {
return {
transclude: true,
replace: true,
scope: {},
bindToController: {
active: '=?',
type: '@'
},
controller: 'UibTabsetController',
controllerAs: 'tabset',
templateUrl: function(element, attrs) {
return attrs.templateUrl || 'uib/template/tabs/tabset.html';
},
link: function(scope, element, attrs) {
// UPD: put link-function in $timeout
$timeout(function() {
console.log("outer - Link");
scope.vertical = angular.isDefined(attrs.vertical) ?
scope.$parent.$eval(attrs.vertical) : false;
scope.justified = angular.isDefined(attrs.justified) ?
scope.$parent.$eval(attrs.justified) : false;
if (angular.isUndefined(attrs.active)) {
scope.active = 0;
}
});
// END UPD
}
};
})
我发现了问题。正是 ng 重复导致了此问题。但是,我要问另一个关于这个问题的问题。
相关文章:
- 使用javascript函数在页面初始化后加载jquery
- 未捕获错误:无法在初始化之前调用方法;
- 如何在剑道网格初始化后设置pageSizes
- 指令未正确初始化
- 在指令初始化和加载数据后调用函数
- API 完成后初始化指令
- AngularJS:为每个指令初始化一个控制器
- angularjs 指令使用 templateUrl - 初始化序列
- 角度单元测试初始化”;无名的“;指令中的控制器
- 使用Angular指令初始化多个jQuery插件
- Angular JS延迟控制器和指令的初始化,直到数据从服务器返回
- 在控制器和postLink初始化后,重置指令中的作用域变量;
- 谷歌地图在Angular指令中没有正确初始化
- 使用带有原型或对象初始化方法的angular指令
- 在加载指令模板之前没有初始化指令的作用域,导致无法加载谷歌地图
- Ng-change和custom指令在初始化时使作用域变量未定义
- 如何在angular中初始化谷歌地图API而不使用任何指令
- 改变控制器初始化的作用域对指令不起作用
- 如何在自定义指令中初始化引导工具提示
- 指令在其子指令之前初始化