在我的指令中需要一点帮助吗
<textarea>
这个想法相当简单。
<文本区域>
元素看起来就像普通的
<input>
元素,直到逻辑确定文本没有足够的空间并通过增加高度来扩展它。
我有一个问题,隐藏的元素
ng-show
或
ng-if
不显示正确的高度时
<
是否可以确定该元素是否尚未展开并对该元素重新运行指令?
指令
.directive('lwAutoExpand', function ($window) {
var LinkFn = function (scope, element, attr, ngModel) {
element.css("overflow", "hidden");
element.context.style.height = parseInt(element.css("line-height").replace("px", ""), 10) + parseInt(element.css("padding-top").replace("px", ""), 10) + parseInt(element.css("padding-bottom").replace("px", ""), 10) + "px";
scope.$watch(function () { return ngModel.$modelValue; }, function (value) {
if (element.context.scrollHeight > parseInt(element.context.style.height.replace("px", ""), 10)) {
element.context.style.height = element.context.scrollHeight + "px";
}
});
angular.element($window).on("resize", function () {
if (element.context.scrollHeight > parseInt(element.context.style.height.replace("px", ""), 10)) {
element.context.style.height = element.context.scrollHeight + "px";
}
});
};
return {
require: 'ngModel',
link: LinkFn,
};
})
Html格式
<textarea placeholder="please type something into the field"
ng-model="user_text"
ng-if="display_element_based_on_another_elements_value"
lw-auto-expand></textarea>