AngularJS 1.5.0中的元素。我正在使用自定義指令ddTextCollapse
來摺疊\展開線程中的長帖子,並且最近遇到了一個奇怪的問題 - 由於DOM未被腳本更改,所以有些帖子不會展開。 這裏是代碼:AngularJS。不能更改指令
link: function(scope, element, attrs) {
scope.doc.collapsed = false;
var child = element.children();
scope.doc.toggle = function() {
scope.doc.collapsed = !scope.doc.collapsed;
child.toggleClass('collapsed');
console.dir(child); //everything is fine! Should have changed DOM also, but alas.
};
attrs.$observe('ddTextCollapseMaxHeight', function() {
var maxHeight = scope.$eval(attrs.ddTextCollapseMaxHeight);
if (child.height() > maxHeight) {
child.addClass('collapsed');
scope.doc.collapsed = true;
var toggleButton = $compile('<i class="material-icons collapse-text-toggle" ng-click="doc.toggle()">more_horiz</i>')(scope);
child.after(toggleButton);
}
});
}
我真搞不清楚爲什麼會發生。它似乎取決於帖子的類型,但即使標記相同,也會出現問題。標記:
<div ng-if="discus.expanded[doc.unid] !== 'attached'" dd-text-collapse dd-text-collapse-max-height="100" class="col-lg-24 martop5 text-content">
<div ng-bind-html="doc.body | linkCreate | nl2br | quoteAuthor | trustAsHtml" class=""></div>
</div>
它看起來像你搞砸了範圍和改變孩子只有當你真的需要改變父母。但是,我再也看不出爲什麼會發生這種情況。
你介意爲此添加一個plunkr嗎?此外,我感覺$ scope.apply()在您的崩潰或展開後可能會有所幫助。 –