Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$anchorScroll不在AngularJs工作_Angularjs_Anchor Scroll - Fatal编程技术网

$anchorScroll不在AngularJs工作

$anchorScroll不在AngularJs工作,angularjs,anchor-scroll,Angularjs,Anchor Scroll,我正在开发一个应用程序,它提交表单并从服务器获取结果,然后是HTML表视图。我的输入表单有点大,覆盖了整个屏幕。当表格出现时,我想在表格视图中自动向下滚动。我用了angularJs的$anchorScroll。但我无法达到我想要的结果。我还使用$timeout来确保表是否已经存在,然后执行$anchorScroll,但仍然没有成功。(基于此解决方案: 这是我的密码 HTML <div data-ng-controller="searchController as searchCtrl" i

我正在开发一个应用程序,它提交表单并从服务器获取结果,然后是HTML表视图。我的输入表单有点大,覆盖了整个屏幕。当表格出现时,我想在表格视图中自动向下滚动。我用了angularJs的$anchorScroll。但我无法达到我想要的结果。我还使用$timeout来确保表是否已经存在,然后执行$anchorScroll,但仍然没有成功。(基于此解决方案:

这是我的密码

HTML

<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>