AngularJS手表无法检测输入范围ng模型更改

时间:2016-08-07 15:13:55

标签: javascript angularjs font-size

得到了我的指示

<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
};

1 个答案:

答案 0 :(得分:1)

请记住,此函数不会按标记名称/ CSS选择器查找元素。对于按标签名称进行查找,请尝试使用angular.element(document).find(...)或$ document.find(),或使用标准DOM API,例如: document.querySelectorAll() 您可以访问children(),contents()和data()实现,因此您通常可以找到解决方法。