2016-08-07 5 views
3

получил свою директиву, как этогоAngularJS смотреть не может обнаружить входной диапазон нг-модель изменения

<input type="range" min="10" max="100" ng-model="svgConfig.textConfig.fontSize" /> 

В моем контроллере я получил объект как

$scope.svgConfig = { 
    text:'', 
    textConfig: { 
     fontSize: 20 
    }, 
    rectConfig: [] 
}; 

Пытаясь поймать изменения здесь, в ссылке на директивы, но ничего не происходит.

var setDomBindings = function($scope, $element, $attrs){ 

    $scope.$watch('svgConfig.textConfig.fontSize', function() { 
     var domText = $element.find('text'), 
      textExample = domText.last()[0], 
      dataText = $scope.svgConfig.text; 

     debugger; //haven't even been reached! 

     if($.isEmptyObject(textExample) && domText.length === 0 && dataText === 0){ 
      $scope.clearSvgRectConfig(); 
      return; 
     } 

     $scope.setSvgRectConfig(textExample, domText.length); 
    }); 
}; 

/* 
* Retruns initialized DOM element 
*/ 
return { 
    restrict: 'E', 
    templateUrl: './app/shared/imageTextEditor/imageTxtSvgView.html', 
    controller: 'imageTxtSvgController', 
    transclude: true, 
    link: setDomBindings 
}; 
+0

ваше обязательство находится на 'svgConfig.textConfig.fontSize', но ваши часы находятся на' svgConfig.fontSize'. это опечатка или плохой перевод вашего кода в тело вопроса? – Claies

+0

@Claies typo, извините – DanilGholtsman

+0

ОК, теперь, когда это очищено, ваш '$ watch' имеет странный синтаксис, и вы, кажется, используете' $ element', который не является функцией с угловым знанием. – Claies

ответ

1

Имейте в виду, что эта функция не найдет элементы по имени тегов/CSS-селектора. Для поиска по имени тега попробуйте вместо этого использовать метод angle.element (document) .find (...) или $ document.find() или использовать стандартные API DOM, например. document.querySelectorAll() У вас есть доступ к реализациям children(), contents() и data(), так что вы обычно можете найти способ обойти его.

+0

ну, да, я мог бы заставить его работать как через события элемента, но, ах ... не очень нравится делать вещи с DOM. Возможно, я что-то пропустил, там также есть много другого кода, который применяет изменения в области – DanilGholtsman

+0

, если вы добавляете jquery с угловым, тогда вы можете использовать эту функцию. –

+0

уже получил его там. я думаю, я сделаю ваш пост ответом, если здесь ничего нового не будет:) – DanilGholtsman