从控制器检索数据后,是否可以自动关注表格行?

时间:2016-06-28 06:00:59

标签: javascript jquery angularjs

我需要在搜索后自动将焦点添加到表格的第一行,因为我具有允许箭头键导航向上/向下移动结果表的功能。

我有一个值($ scope.firstItem),我在检索到一些搜索结果后在控制器中进行了设置。所以我可以设置$ watch函数,然后在指令中触发一些代码。

在我的控制器中:

redirectTo

在我的指令中:

children

$ watch功能正在运行,而且' info'正被添加到第一行,这证明上下文是正确的,但focus()不起作用。

我没有使用焦点()而是尝试过:

...
$scope.firstItem = data[0];
....

但是我收到一条错误,说[$ rootScope:inprog] $ apply已在进行中。我想这是因为Angular没有完成它做的任何事情并且无法创建事件。

任何想法我需要做些什么来实现这个目标?我是以错误的方式接近这个吗?甚至可以自动关注表格行吗?

编辑:我已经尝试将焦点移动到页面上的其他元素(另一个文本框),这很好用。它只是不想专注于表格行。

EDIT2:我尝试添加一个超时功能,现在正在工作并专注于桌子,尽管这显然不可靠!但它确实表明正在发生其他事情,并解释了为什么我的原始代码不起作用。是否有一个事件,我可以挂钩,一旦Angular完成做任何阻止我执行焦点方法的操作?

module.exports = function(){

    return function(scope, element, attrs) {
        scope.$watch('$parent.firstItem', function(oldValue, newValue){
            var firstTableRow = element[0].children[0].children[0];

            if ( firstTableRow !== undefined ) {
                firstTableRow.classList.add('info');
                firstTableRow.focus(); // Todo: Not focusing, need to find out why
            }
        });
    };
};

0 个答案:

没有答案