gpt4 book ai didi

javascript - 在 AngularJS 中运行时获取 HTML 元素的宽度

转载 作者:行者123 更新时间:2023-11-30 10:11:44 25 4
gpt4 key购买 nike

我正在慢慢摸索着在 AngularJS 中构建指令。目前,我的指令如下所示:

.directive('myDirective', function () {
return {
restrict:'E',
transclude: true,
scope: {
showLinks: '=?',
query: '='
},
templateUrl: '/directives/my-directive.html',
controller: function ($scope) {
if (angular.isUndefined($scope.showLinks)) {
$scope.showLinks = true;
}

$scope.getLocation = function(l) {
// Get width of "field"
};
}
};
});

my-directive.html 中的标记如下所示:

<div style="width:100%;">
<input id="field" type="text" autofocus autocomplete="off" class="form-control" ng-model="query"
typeahead="option as option.Name for option in getLocation($viewValue)"
typeahead-min-length="3" typeahead-template-url="location.html" />
<script type="text/ng-template" id="location.html">
{{showLinks}} <!-- Never renders -->
<span bind-html-unsafe="match.label | typeaheadHighlight:query"></span>
</script>
</div>

当用户开始输入时,会在 Controller 中触发 getLocation 函数。我需要在触发 getLocation 时获取字段文本框的宽度。我如何在 AngularJS 中获取该元素的宽度?

最佳答案

您需要将 element 作为链接函数的参数传递,并使用 offsetWidth 计算其宽度。

link: function(scope, element, attrs) {
var elInput = element.find('input');
alert(elInput[0].offsetWidth) ; // gives offsetwidth of element

}

您可以在以下链接中引用某种类似的场景:

  1. > https://gist.github.com/Zmaster/6923413
  2. > http://plnkr.co/edit/DeoY73EcPEQMht66FbaB?p=preview

希望这对您有所帮助:)

更新代码:

app.controller('MainCtrl', function($scope, $element) {
var elInput = $element.find('input');
alert(elInput[0].offsetWidth);
$scope.name = 'World';
});

关于javascript - 在 AngularJS 中运行时获取 HTML 元素的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com