【发布时间】:2016-09-08 13:50:54
【问题描述】:
我意识到那里有 SO 帖子询问类似甚至相同的事情,但在你捣碎重复按钮之前,请注意我已经尝试了每一个解决方案,但没有一个在我的目标 AngularJS 中工作版本(1.4.8)。考虑到这一点:
HTML:
<div ng-app="app" ng-controller="app">
<textarea size-watch>{{ height }}</textarea>
</div>
JavaScript:
angular.module("app", [])
.controller("app", function() {
})
.directive("sizeWatch", function() {
return {
restrict: "A",
link: function(scope, elem) {
scope.$watch(function() { return elem[0].offsetHeight; }, function(newHeight, oldHeight) {
scope.height = newHeight;
}, true);
}
}
});
这就是我想要做的:我想创建一个指令来监视元素的高度,并在它发生变化时更新范围上的属性。我可以获得初始显示的值,所以我知道指令和控制器/范围之间的链接正在工作。但是,当 textarea 调整大小(通过拖动右下角)时,我无法获取要更新的值。我在第二个watch 函数中调用了debugger;,并验证它只被调用一次。
找到可行的解决方案后,请随时更新链接的小提琴。
【问题讨论】:
-
使用
elem.addEventListener('resize', function () {});?? -
elem.attachEventHandler不是函数。 -
elem[0]抱歉,不过看看这个:stackoverflow.com/questions/5570390/resize-event-for-textarea -
在我看来,创建一个 div
contenteditable然后使用elem[0].addEventListener将调整大小事件附加到该事件会更好
标签: javascript angularjs angularjs-directive angularjs-watch