我有一个用于提交评论的表单,该评论具有与AngularJS 1.4控制器的双向绑定。发送评论后,我想清除评论-textarea并使用库http://www.jacklmoore.com/autosize/中的autosize()
将其调整为一行。如果是textarea
,则使用自动调整大小用户输入长评论。
但是,似乎autosize
在注释输入被清除之前发生。所以这意味着textarea将保持输入文本的大小。
这段代码有效,但我觉得等待50毫秒很难看。在调用textarea
之前,我该怎么做才能确保$scope.updateTextareaSize();
双向绑定已更新?
我的代码是
commentService.storeComment($scope.text)
.success(function(data, status, headers, config) {
$scope.text = ''; // The comment which is two-way bound.
setTimeout(function() { $scope.$evalAsync(
$scope.updateTextareaSize() ); // Call autosize()
}, 50); // Update textarea size after the angular bindings have updated. Assuming this is done in 50ms.
})
答案 0 :(得分:4)
您可以使用$timeout服务,超时为0。
$timeout(function() {
$scope.updateTextareaSize() // Call autosize()
}, 0);
执行此操作时,会使$scope.updateTextareaSize()
函数在$digest
中的所有Angular内部管道之后运行,例如更新双向绑定。