2017-10-04 58 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)? –

回答