我正在使用引导程序和角度进行聊天。每个消息都以“well-sm”类显示在其div中。 这是负责该代码的样子:角元素记录不正确的值
<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
所以我决定增加一个指令变化以及高度看起来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);
NOW问题当我第一次看登出整个元素,我看到,很多都在Chrome和FF的属性中: clientWidth:467, scrollWidth: 2347个
但接下来的console.log显示: 435 435“宽度”
这怎么可能是同一个对象给了我不同的价值观?我不知道如何解决这个问题
你在某些时候改变数值? console.log不会显示所有不同的值,只会有最后一个,至少在chrome中,它通过日志旁边控制台中的黄色三角形显示。 – koox00
@ koox00,谢谢你的评论。那里没有黄色的三角形。 我不会更改该值,只需将其注销即可。可以隐式改变某处,但我没有编写任何代码来改变它。 另外,这很奇怪。我注销了元素的所有属性并且它是正确的,并且在下一行中,我只注销了两个属性 - 其中一个属性不正确。我认为没有时间去改变。 – Sapientisat
'link'运行时不会呈现文本,请尝试使用'$ timeout' – charlietfl