我的目标比较简单。我希望能够在<ul>
列表上有一个滚动条时显示一个按钮。
为此,我添加了以下 JQuery 插件来检查我的列表中是否有滚动条:
(function($) {
$.fn.hasScrollBar = function() {
return this.get(0).scrollWidth > this.width();
}
})(jQuery);
这段代码运行良好,所以我在我的控制器的方法中调用了这个hasScrollBar()
函数:
$scope.hasGoTabButtonToBeDisplayed = function() {
return $("#tabset>ul").hasScrollBar();
}
ng-show
只有当我的列表上有滚动条时,我才会使用该指令显示我的按钮:
<button type="button"
class="btn btn-xs"
style="float:left;"
ng-show="hasGoTabButtonToBeDisplayed()"
ng-click="onGoLeftTabButtonClicked()">
<span class="glyphicon glyphicon-triangle-left" aria-hidden="true"></span>
</button>
当我加载页面时,如果我的列表上有滚动条,按钮是否显示,但如果我调整窗口大小并且出现滚动条,按钮的显示不会改变,这意味着我的hasGoTabButtonToBeDisplayed()
方法没有被调用。我理解为什么不调用这个方法,因为 Angular 无法检测到这个方法的变化,但我不知道该怎么做。
也许我有一个错误的逻辑来解决这样的问题?