css - 在 Angular 指令中动态更改 CSS?

标签 css angularjs angular-ui-bootstrap angular-directive

我目前正在制定一个指令,它是一个文本类型的输入字段。现在,如果文本对于输入字段而言太大,我希望该字段的宽度能够动态增长。以下是我的指令:

.directive('dynamicInput', function () {
    return {
        restrict: 'E',
        template: '<input type="text" style="display: inherit;" class="form-control" required />',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModel) {


            console.log('ATTRS: ', attrs);
            console.log('ELEMENT: ', element);

            if(attrs.width){
                console.log('WiDTH: ', attrs);

            }

        }
    }
});

这里是 plunker:

Change Width Dynamically .

我知道您可以更改您在元素对象上使用的 CSS 类,但是,我不只是想更改类,我想基本上是随着文本在框中增加而动态更改宽度。所以问题是:如何将每次触发“onchange”事件时的 CSS 更改为输入文本的长度?另外,我想将它包含在一个指令中,这样我就不会依赖它声明的父范围内的任何东西。

最佳答案

您可以获得您的输入元素,然后使用原始 javascript 或 Angular 对象元素对其进行任何您想做的事情。

像这样(链接函数):

var inputEl = angular.element(element.children()[0]);

inputEl.on('keydown', function() {
   inputEl.attr('size', inputEl.val().length); 
});

这并不完全符合我的想法,但您明白了。 您可以访问指令中的元素,因此这种逻辑很容易实现,除了它本身之外不依赖任何其他东西。

Modified plunker .

关于css - 在 Angular 指令中动态更改 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361283/

相关文章:

html - 足够的 CSS 选择器 1 嵌套元素向上

javascript - Firefox 在每次请求 Promise ajax 调用时弹出 "This web page is being redirected to a new location"- 有什么办法可以避免吗?

css - 单元格边框宽度随内容自动增加

angularjs - ui-bootstrap 模态追加

javascript - angular-ui:轮播上的触发事件

html - 悬停时如何使图像恢复不透明度影响?

javascript - 带数组的 HTML 5 本地存储

css - 当内部 float 对象展开时展开 float 对象

AngularJS 标记指令,如 StackOverflow 的标记系统

javascript - 引导模式中的 Angularjs 多选下拉列表