2017-10-04 18 views
0

我有以下指令:

// expose directive 
     return { 
      restrict: 'E', 
      link: linkFn, 
      scope: { 
       treeModel: "<" 
      }, 
      controller: function ($scope) { 
       var vm = this; 
      }, 
      controllerAs: 'vm' 
     }; 

我想要做的是對treeModel看變化,所以在我的鏈接功能我做了如下:

function linkFn(scope, element, attrs) { 
    scope.$watch('treeModel', function(value){ 
     if(value instanceof Array){ 
      scope.tree.jstree(true).settings.core.data = value; 
      scope.tree.jstree(true).refresh(); 
     } 
    }); 
} 

在這種情況下(該代碼被執行兩次首次value未定義,但在第二時間value是對象的數組),但我想要實現的$onChanges鉤中,由於I」的工作原理米計劃荷蘭國際集團,以我的應用程序遷移到角2,所以我做了如下:

// expose directive 
     return { 
      restrict: 'E', 
      link: linkFn, 
      scope: { 
       treeModel: "<" 
      }, 
      controller: function ($scope) { 
       var vm = this; 
       vm.$onChanges = function (changes) { 
        if($scope.treeModel instanceof Array){ 
         $scope.tree.jstree(true).settings.core.data = $scope.treeModel; 
         $scope.tree.jstree(true).refresh(); 
        } 

       }; 
      }, 
      controllerAs: 'vm' 
     }; 

然後我刪除從我的鏈接功能的scope.$watch代碼。

當我嘗試這樣做,它不工作,vm.$onChanges其中值是不確定的被觸發一次,從來沒有被觸發,第二次爲與scope.$watch,並且changes參數始終是不確定的,當它應該是一個對象,其中鍵是更改的綁定名稱。

我該如何解決這個問題?

+0

請問您可以發表一個[*最小,完整和可驗證的示例*](https://stackoverflow.com/help/MCVE)? –

回答