I 다음 지시문이 있습니다은 편도 지침에 바인딩
// expose directive
return {
restrict: 'E',
link: linkFn,
scope: {
treeModel: "<"
},
controller: function ($scope) {
var vm = this;
},
controllerAs: 'vm'
};
내가하고 싶은 것은 내 링크 기능에서 나는 다음과 같은 한, 그래서 treeModel
에 변화를 감시하는 것입니다 : (이 코드는 두 번 value
이 정의되어 처음 실행하지만, 두 번째 value
에서 객체의 배열됩니다),하지만 난 '이후에서, $onChanges
후크를 구현하려는이 경우 작동
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();
}
});
}
m plann 각도이 내 응용 프로그램을 마이그레이션 할 보내고, 그래서 나는 다음과 같은 한 :
// 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
매개 변수는 항상 정의되지 키는 변경되는 바인딩 이름입니다.
어떻게 해결할 수 있습니까?
[* Minimal, Complete, Verifiable example *] (https://stackoverflow.com/help/mcve)? –