1

我是 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工作人员。

4

0 回答 0