确保更新AngularJS双向绑定

时间:2015-08-18 14:54:08

标签: angularjs

我有一个用于提交评论的表单,该评论具有与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.
})

1 个答案:

答案 0 :(得分:4)

您可以使用$timeout服务,超时为0。

$timeout(function() {
    $scope.updateTextareaSize() // Call autosize()
}, 0);

执行此操作时,会使$scope.updateTextareaSize()函数在$digest中的所有Angular内部管道之后运行,例如更新双向绑定。