我有一个触发DOM事件的手表:
scope.$watch(function() { return controller.selected; },function(selected) { if (selected) { $input.trigger('focus'); } });
问题是,我有一个处理程序’focus’做范围。$ apply。
$input.bind('focus',function() { scope.$apply(function() { controller.focused = true; }); });
所以当我的$ watch被从一个$ digest内部触发时,它会导致一个错误,因为它试图触发另一个$ digest。
我的解决方法是把触发器在$超时。
scope.$watch(function() { return controller.selected; },function(selected) { if (selected) { $timeout(function() { $input.trigger('focus'); }); } });
这工作…到目前为止。这是正确的方法来处理这个吗?我不知道这是否捕获每个案例,并希望看看是否有一个角度批准的方式有一段代码延迟后的摘要。
谢谢!