0

Iタブを作成するには、angular-ui-bootsrap tabsディレクティブを使用します。しかし、私が各コントローラとリンク機能でconsole.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 

ディレクティブが初期化されました。

plunkerにアクセスし、コンソールを確認します。

答えて

1

あなたのリンク機能を$ timeoutサービスに入れてください。私は問題を発見したplunker

// 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 
 
    } 
 
    }; 
 
})

+0

タイムアウトは機能しますが、タイムアウトよりもクリーンですか?それはなぜ起こるのでしょうか? –

0

を参照してください。この問題を引き起こしているのは、ng-repeatです。しかし、私はこの問題について別の質問をするつもりです。

関連する問題