$anchorScroll不在AngularJs工作
我正在开发一个应用程序,它提交表单并从服务器获取结果,然后是HTML表视图。我的输入表单有点大,覆盖了整个屏幕。当表格出现时,我想在表格视图中自动向下滚动。我用了angularJs的$anchorScroll。但我无法达到我想要的结果。我还使用$timeout来确保表是否已经存在,然后执行$anchorScroll,但仍然没有成功。(基于此解决方案: 这是我的密码 HTML$anchorScroll不在AngularJs工作,angularjs,anchor-scroll,Angularjs,Anchor Scroll,我正在开发一个应用程序,它提交表单并从服务器获取结果,然后是HTML表视图。我的输入表单有点大,覆盖了整个屏幕。当表格出现时,我想在表格视图中自动向下滚动。我用了angularJs的$anchorScroll。但我无法达到我想要的结果。我还使用$timeout来确保表是否已经存在,然后执行$anchorScroll,但仍然没有成功。(基于此解决方案: 这是我的密码 HTML <div data-ng-controller="searchController as searchCtrl" i
<div data-ng-controller="searchController as searchCtrl" id="scrollArea">
<form>
//HTML input elements
<div class="buttons">
<md-button class="md-primary md-raised" ng-click="searchCtrl.gotoTable('resultTable')">Start</md-button>
</div>
</form>
</div>
<!-- Smart Table for displaying result -->
<div class="rtable" ng-show = "searchCtrl.tableViewData.length > 0" id="resultTable">
//table content
</div>
我不知道为什么它不工作
我需要在CSS中定义id scrollArea和Resultable吗
任何帮助都将不胜感激。
提前谢谢
更新
基于Okazari的解决方案,我尝试在HTML的最底部放置另一个带有许多br标记的div。现在,当我刷新页面时,它会自动滚动到该div标记,而无需单击“开始”。这有点奇怪。我还尝试覆盖
<div class="rtable" ng-show = "searchCtrl.tableViewData.length > 0" id="resultTable">
使用另一个id为=“resultTable”的div标记进行标记。
但它仍然不起作用。您实际上是在没有任何参数的情况下调用函数
ng-click="searchCtrl.gotoTable()"
而在控制器中,您希望有一个:
self.gotoTable = function(resultTable)
试试这样的
ng-click="searchCtrl.gotoTable('resultTable')"
或者这个:
self.gotoTable = function()
{
$timeout(function() {
$location.hash("resultTable");
$anchorScroll();
});
};
(只有一个,不是两个)
希望有帮助
编辑:非常确定你不能去一个隐藏的div。正如我在评论中所说的,当你尝试anchorscroll()时,你的ng秀可能会被评估为true
这是一个没有ng show的工作模式。我将构建一个小型解决方案来避免ng show问题
为了避免这种副作用,我用另一个div用ng show包装了这个div
<div id="resultTable">
<div class="rtable" ng-show = "searchCtrl.tableViewData.length > 0">
</div>
在您的控制器中什么是可生成的?您是否测试了$anchorScroll()
在一个#
上查看是否有效?@JoeLloyd:resultTable是表的id。你可以在HTML中看到最后一个。我想显示这个表。你能不能尝试重现你在我的plunker上的问题?抱歉,由于格式的原因,更新描述很混乱。我现在已经更新了。@Okazari:不,我刚刚从plunker复制了你的代码并且尝试过。我认为整个问题都是因为对服务器的get和post请求。是的,我一个接一个地尝试了这两个选项。但它仍然不起作用…:(@HarshSoni我想我对这个问题有一个想法。你实际上不能锚定滚动到一个隐藏的div。直到你想要滚动到的div上有一个ng show。锚定滚动触发时,ng show可能会被评估为true。嘿,我也尝试过用id覆盖div标签,但仍然不起作用。我已经更新了这个问题。请检查一下。谢谢。没有什么帮助。我已经在controller.HTML:*Test**controller:$scope.testFunc=function(){$anchorScroll();}中注入了$anchorScroll。我正在使用这个md日历指令。
<div id="resultTable">
<div class="rtable" ng-show = "searchCtrl.tableViewData.length > 0">
</div>