仅在数据是DOM中的渲染器后才在指令中调用jquery插件

时间:2013-05-12 12:32:18

标签: jquery angularjs angularjs-directive

我想在angular指令中初始化一个jquery插件,但只有在返回服务数据和DOM中的第一个渲染器之后。 我似乎可以弄清楚如何在angular指令中执行此操作。 到目前为止我有这个代码,但似乎我在服务数据到达之后调用插件,但在它是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);

        });
    }
};

});

1 个答案:

答案 0 :(得分:1)

如果首先需要DOM 渲染,请使用$timeout

如果您只需要更新DOM(但尚未渲染),请使用$evalAsync。首先尝试这个,因为它可以防止闪烁。