呼叫jQuery插件的指令后才数据渲染器的DOM(Call jquery plugin in dir

2019-09-02 17:41发布

我想在一个角指令,但只有业务数据返回,首先渲染在DOM后,初始化一个jQuery插件。 我似乎可以找出如何在角指令做到这一点。 我有这样的代码,到目前为止,但似乎我打电话插件服务数据到达后,但在此之前它是渲染器的DOM ...任何提示?

myApp.directive('myDirective', function () {
return {
    restrict: 'A',
    link: function ($scope, element, attrs) {
        $scope.$watch("data.length", function( newValue, oldValue ) {
            if ( newValue === oldValue ) {
                console.log( "Should return..." );
                return; 
            }
            $(element).elastislide();
        });
    }
};

});

===编辑====如果我使用setTimeout函数它工作推迟执行,这是做到这一点的正确方法?

    myApp.directive('myDirective', function () {
return {
    restrict: 'A',
    link: function ($scope, element, attrs) {
        $scope.$watch("data.length", function( newValue, oldValue ) {
            if ( newValue === oldValue ) {
                console.log( "Should return..." );
                return; 
            }
            postpone = $timeout(function() {
                  $('#carousel').elastislide();                 
            }, 100);

        });
    }
};

});

Answer 1:

如果你需要的DOM第一渲染 ,使用$超时 。

如果你只需要在DOM被更新(但不呈现还),使用$ evalAsync 。 首先试试这一个,因为它可以防止闪烁。



文章来源: Call jquery plugin in directive only after data is renderer in DOM