我是 Angular 的新手,我正在尝试为用户注册编写一个 error_div 指令,如果用户名/密码无效,error_div 会显示列出的错误。
这是我的指令:
angular.module(APP_NAME).directive('errorDiv', function($timeout) {
return {
template: '<li data-ng-repeat="error in login_errors">' +
'{{error}}' +
'</li>',
link: function(scope,element,attrs) {
scope.$watch('login_errors', function() {
console.log(document.getElementById('error_div_login').offsetHeight);
}, true);
}
};
});
这是HTML
<div id="error_div_login" error-div></div>
问题是如果有三个错误生成三个列表元素,将 div 高度增加到 56px,
console.log(document.getElementById('error_div_login').offsetHeight);
只会返回 42,这是前两个列表元素的高度。
要获得 56,我需要将 console.log 放入 $timeout 中,例如
$timeout(function() {
console.log(document.getElementById('error_div_login').offsetHeight);
}, 100);
我的猜测是,在 Angular 渲染 div 时执行了 console.log,但是有没有更合适的方法来解决?
其实我的目的只是在div内容发生变化时得到div的高度,然后做一些GUI工作人员。