Angular指令在附加超时后返回?

时间:2014-01-03 00:01:50

标签: jquery angularjs timeout angularjs-directive footable

所以我在我的网站上使用footables,这是一个jQuery插件。我把它包装成一个角度指令,如下所示:

angular.module('myApp').directive("footable", function() {
    return {
    restrict: 'A',
    link: function(scope, element, attrs){
        return element.footable(scope.$eval(attrs.footable));
    }
  }
});

然后我打电话就像

一样
<table class="footable" footable="{breakpoints: {'phone': '639','tablet':'767'}}">

问题在于,即使指令正在创建一个足迹,但是足迹需要100毫秒才能工作,如果我在移动设备中启动它不会重排,除非我在我的控制器中发送超时,如下所示:

$timeout(function(){
            $('.footable').trigger('footable_redraw'); //force a redraw
    }, 100);

这个问题是我使用的是jquery,并且这是我的页面控制器。我想把这个超时和重绘放在指令中并让它工作吗?还是有另一种方法让finnicky jquery插件工作?

1 个答案:

答案 0 :(得分:1)

您总是可以将超时移动到指令中,对吗?

angular.module('myApp').directive("footable", function($timeout) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs){
            element.footable(scope.$eval(attrs.footable));
            $timeout(function(){
               element.trigger('footable_redraw');
            }, 100);
        }
    }
});

这是一个更好的Angular zen,但可能有一个更好的方法来处理这个脚本身。