【发布时间】:2015-06-27 05:38:22
【问题描述】:
我体内有一个看不见的元素。我想在它变得可见时触发一个功能。这方面的最佳做法是什么?
这里是plunker 的示例作品。在这段代码中,窗口应该通过单击按钮滚动到“#hiddenObj”div。但第一次单击时,只有 div 变为可见,第二次窗口滚动。
【问题讨论】:
标签: angularjs
我体内有一个看不见的元素。我想在它变得可见时触发一个功能。这方面的最佳做法是什么?
这里是plunker 的示例作品。在这段代码中,窗口应该通过单击按钮滚动到“#hiddenObj”div。但第一次单击时,只有 div 变为可见,第二次窗口滚动。
【问题讨论】:
标签: angularjs
ng-hide=false 有效地将 'display:none' 添加到元素,这意味着该元素在 DOM 中没有任何位置可以滚动到。
所以只需在元素的可见状态上设置一个 $watch,如下所示
var scrollElement = "#hiddenObj";
$scope.$watch(function() { return angular.element(scrollElement).is(':visible') }, function() {
scrollTo(scrollElement);
});
【讨论】:
Angular 为使用 ng-hide/ng-show 隐藏的元素添加了一个“ng-hide”类。
观察是否有变化的一种方法是为元素的类添加一个观察者,并检查它是否包含“ng-hide”。
scope.$watch(function() { return element.attr('class'); }, function(newValue) {
if (newValue.match(/ng-hide/) !== null) {
// Element is hidden.
}
});
【讨论】: