当前位置: 首页 > 面试题库 >

使用$ location和$ anchorScroll将表行滚动到视图中

轩辕乐邦
2023-03-14
问题内容

我正在尝试使用$ anchorScroll向下滚动页面以确保显示表格的一行。我已经阅读了大多数有关$
anchorScroll的SO线程和文档。据我所知,我正在正确使用它。我已经使用Firebug逐步执行了代码,看来我正在使用的元素ID是正确的。

当我执行应更改滚动位置的功能时,它确实会更改滚动位置,但它只是向上滚动,一直到顶部。我要滚动到的“目标”元素在执行功能的页面下方。

没有错误消息,只是没有做我需要的。

这是我使用的简单函数:

$scope.scrollTo = function (elementId) {
        console.log("element[" + angular.element(elementId) + "]");
        $location.hash(elementId);
        $timeout(function() {
            $anchorScroll();
        });
    };

我还尝试过更改对此的引用,以便它不是针对表格行,而是针对封装表格的手风琴div,但这没有什么区别。它仍然只是跳到页面顶部。

请注意,在调用“ scrollTo”之前,我首先确保打开带有表的手风琴。无论如何,即使手动将其打开也无法正确滚动。

更新:

这是我要滚动到的HTML的一部分:

                <div ng-controller="WorkflowDefsCtrl">
                <pane accordion-group heading="Workflows" is-open="accordionActiveFlags.workflowDefs" id="workflowDefs">
                    <label for="workflowDefsTable">Workflow Definitions</label>
                    <table id="workflowDefsTable" ng-table class="table">
                        <tr ng-repeat="workflowDef in sunlightConfig.workflowDefinitions | orderBy: workflowDef.order" id="workflowDef{{workflowDef.id}}">
                            <td data-title="'ID"">{{workflowDef.id}}</td>
                            <td data-title="'Name"">{{workflowDef.name}}</td>
                            <td data-title="'Label"">{{workflowDef.label}}</td>
                            <td data-title="'Order"" class="text-right">{{workflowDef.order}}</td>
                            <td data-title="'Render?"">{{workflowDef.render}}</td>
                            <td data-title="'Query Fragment"">{{workflowDef.queryFragment}}</td>
                            <td data-title="'Query Order"" class="text-right">{{workflowDef.queryOrder}}</td>
                        </tr>
                    </table>
                </pane>
            </div>

我正在尝试的两个测试用例将使用元素“ workflowDefs”和任何“ workflowDef {{workflowDef.id}}”元素。

更新:

我增强了“ scrollTo”方法,以处理滚动到刚刚变得可见的元素。但是,这没有任何区别。无论如何,它仍然只是滚动到顶部。

更新:

今天,我意识到“
angular.element”的字符串参数应该是CSS选择器,而不是元素ID,因此我必须添加“#”作为前缀。这样可以找到正确的元素,但是不幸的是,它仍然对显示屏没有影响。它仍然不会滚动到该元素。

我的新“ scrollTo”函数如下所示:

    scrollTo:   function (elementId) {
        $location.hash("#" + elementId);
        $timeout(function() {
            $anchorScroll();
        });
    },

问题答案:

我设法弄清楚了。我正确地假定$anchorScroll必须在代码$timeout块中执行,但这还不够。的呼叫$location.hash()也必须在中$timeout block。一旦我将scrollTo功能更改为以下内容:

    scrollTo:   function (elementId) {
        $timeout(function() {
            $location.hash(elementId);
            $anchorScroll();
        });
    },

然后,它开始一致地工作。



 类似资料:
  • 问题内容: Selenium 1.x或2.x中是否可以滚动浏览器窗口,以使XPath标识的特定元素在浏览器的视野中?Selenium中有一个聚焦方法,但是在FireFox中似乎并没有实际滚动视图。有人对此有任何建议吗? 我需要这样做的原因是我正在测试页面上某个元素的点击。不幸的是,除非该元素可见,否则该事件似乎不起作用。我无法控制单击元素时触发的代码,因此无法调试或对其进行修改,因此,最简单的解决

  • 我有一个android布局,它有一个,里面有很多元素。在的底部有一个,然后由适配器填充。 我遇到的问题是,android将从中排除,因为已经具有可滚动的功能。我希望与内容一样长,并且主滚动视图是可滚动的。 我怎样才能达到这种行为呢? 下面是我的主要布局: 然后以编程方式将组件添加到具有ID:的linearlayour中。下面是加载到LinearLayout中的一个视图。就是这个给我卷轴带来麻烦的。

  • 我的TableView包含一些数字数据。当我说按按钮编辑值时,它会将单元格的背景更改为绿色。当没有足够的行使表格可滚动时,这种方法很有效。一旦表格变成(或从一开始就是)可滚动的,它就会开始表现出怪异的行为。它会更改已编辑项目的背景,但也会更改在向下滚动之前不可见的项目的背景。然而,当我调试时,更改背景的代码只被调用一次。我认为它与tableview有关,当is scrollable破坏并重新创建单

  • 我有一个简单的ListView程序,其中试图附加滚动条。上下滚动时列表没有移动,在这里,列表应该相应地移动。似乎,我无法正确设置contentItem。寻找一些提示。 请在下面找到我的示例核心,于是我在listView中添加了一个垂直滚动条。rolesListModel是我的模特。 主要的qml

  • 本文向大家介绍angular中使用路由和$location切换视图,包括了angular中使用路由和$location切换视图的使用技巧和注意事项,需要的朋友参考一下 我们可以利用angular的$route服务来定义这样一种东西:对于浏览器所指向的特定URL,angular会加载并显示一个模板,并实例化一个控制器为模板提供内容。 在应用中,你可以通过调用$routeProvider服务上的函数来

  • 我正在设计一个具有滚动视图的页面,其上方是表格视图(禁用滚动)。为此,我在这个问题中提到了答案 - 使UITableView不可滚动并调整高度以容纳所有单元格,但没有成功。 视图层次结构以及提供的约束- -主视图 -滚动视图< br >固定在主视图的所有边上(0,0,0,0),限制边距 -内容视图 固定到滚动视图(0,0,0,0),与主视图宽度相等,与主视图高度相等(优先级-250) -内容视图中