javascript - Angular 元素记录不正确的值

标签 javascript angularjs twitter-bootstrap

我正在使用 bootstrap 和 angular 聊天。每条消息都显示在其 div 中,带有“well well-sm”类。 这就是负责的代码的样子:

<div ng-repeat="message in messages" class="media" >
     <h5 class="media-heading"><span>{{message.nick}}</span> {{message.time | date: "yyyy.MM.dd HH:mm"}}</h5>
     <div change-well-height class="well well-sm">{{message.body}}   
     </div>
</div>

但是如果它的长度太大,我们会得到这个: How ordinary and long messages look like

所以我决定添加一个指令 change-well-height 来查看 scrollWidth 是否大于 clientWidth,如果是则改变高度。 指令代码:

(function() {
  'use strict';

  app.directive('changeWellHeight', [
    '$location', function($location) {
      return {
        restrict: "A",
        link: function(scope, element, attr) {
          $( document ).ready(function(){
            console.log(element);
            console.log(element['0'].scrollHeight, element['0'].clientHeight, 'Height');
            console.log(element['0'].scrollWidth, element['0'].clientWidth, 'Width');
            if (element['0'].scrollHeight > element['0'].clientHeight || element['0'].scrollWidth > element['0'].clientWidth){
              //do stuff
            }
          });
        }
      };
    }
  ]);

}).call(this);

现在的问题 当我第一次查看注销的整个元素时,我看到,在 Chrome 和 FF 中的许多属性中: 客户宽度:467, 滚动宽度:2347

但接下来的 console.log 显示: 435 435“宽度”

同一个对象怎么可能给我不同的值?我不知道如何解决这个问题

最佳答案

不要使用无论如何都没有值(value)的 document.ready,而是使用 $timeout 以便在您的代码运行时呈现文本:

app.directive('changeWellHeight', [
    '$location', '$timeout', function($location, $timeout) {
      return {
        restrict: "A",
        link: function(scope, element, attr) {
          $timeout(function(){
            console.log(element);
            console.log(element['0'].scrollHeight, element['0'].clientHeight, 'Height');
            console.log(element['0'].scrollWidth, element['0'].clientWidth, 'Width');
            if (element['0'].scrollHeight > element['0'].clientHeight || element['0'].scrollWidth > element['0'].clientWidth){
              //do stuff
            }
          });
        }
      };
    }
  ]);

关于javascript - Angular 元素记录不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213834/

相关文章:

javascript - ngDialog - 在 Chrome 中打开/关闭对话框时主体类不会更改

javascript - 下一个选项卡显示内容,但选项卡不跟随

javascript - 调整大小时的高度检查会导致滞后

javascript - 当项目停止在 .NET 中运行时,是否有办法阻止 Web 方法工作?

JavaScript 和 DOM 绑定(bind)

jQuery 启动

javascript - AngularJS:超时不起作用

javascript - ng-submit 使用工厂函数?

css - 无法使 Bootstrap 响应式设计与 dotnetnuke 一起工作

css - 将 div 推到父级的底部