0
각도 지시기 + 컨트롤러를 통해 JQRangeSlider을 처리하고 있습니다.
내 컨트롤러 내에서 범위 값에 새 값을 할당하려고합니다. 올바르게 업데이트 되더라도 컨트롤러 범위에 변경 사항이 통지되지 않습니다. (내 지시문에서 격리 된 범위 '='
을 사용하고 있습니다.)
$scope.toggleTimeScale = function(refinementString) {
console.log('scale set to', refinementString);
$scope.timescale = refinementString; // year, month, day...
}
왜 immediatly 변수 변경 통보 $scope.$watch
되지 않습니다 :
// JQRangeSlider event handler
var valuesChanged = function(e, data) {
if (data.values.min && data.values.max) {
console.log('values changed', data.values); // this is always printed
$scope.minselectedtime = data.values.min; // not triggering $scope.$watch
$scope.maxselectedtime = data.values.max;
$scope.$broadcast('minchanged', $scope.minselectedtime); // instantly triggering $scope.$on('minchanged',...)
console.log('scope', $scope);
}
};
$scope.$watch('minselectedtime', function(newValue, oldValue) {
if (newValue === oldValue) {
return;
}
console.log('minselectedtime -->', newValue);
}, true);
$scope.$on('minchanged', function(event, min) {
console.log('minchanged ==>', min);
});
$scope.$watch('minselectedtime', ...)
$scope.minselectedtime
이도 수정되지 않습니다) 다음
$scope
수정에 트리거?
격리 된 코드의
$scope.minselectedtime
값이 변경되었지만
$scope.toggleTimeScale
이 트리거 될 때까지 변경된 값이 부모 범위에 표시되지 않습니다.
새 값을'$ scope.minselectedtime'과'$ scope.maxselectedtime'에 할당 한 직후에'$ scope. $ apply()'를 사용하여 문제를 해결했지만 이것이 올바른 방법인지는 의심 스럽습니다. . 이 작업을 수행하는 더 좋은 방법이 있습니까? – rxdazn