【发布时间】:2014-12-09 06:35:51
【问题描述】:
我目前正在制定一个指令,它是文本类型的输入字段。现在,如果文本对于输入字段而言太大,我希望该字段的宽度动态增长。以下是我的指令:
.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:
我知道您可以更改您在元素对象上使用的 CSS 类,但是,我不只是想更改类,我想基本上动态地更改宽度,因为文本在框内增加。所以问题是:如何将每次触发“onchange”事件时的 CSS 更改为正在输入的文本的长度?另外,我想把它包含在一个指令中,这样我就不会依赖它声明的父范围内的任何东西。
【问题讨论】:
-
使用
ng-change并将更改处理程序放入指令link函数中,您也可以访问该元素 -
@charliefl ng-change 肯定会执行更改事件,但是,它无助于更新输入标签上的样式。
标签: css angularjs angular-ui-bootstrap angular-directive