jQuery插件作为指令并在插件上调用public方法

时间:2013-12-09 23:30:28

标签: javascript angularjs bxslider

我成功地将一个jQuery插件变成了一个指令。

app.directive('bxSlider', function($timeout)
{
    return {
        restrict: 'A',
        link: function(scope, element, attrs)
        {
            $timeout(function(){element.bxSlider(scope.$eval(attrs.bxSlider))},1);
        }
    }
});

在我的控制器中(通过点击功能),我想调用一个在插件上公开的方法,但我不知道该怎么做。我尝试将指令设置为变量并从我的控制器调用它,但是我得到的错误是...没有方法......

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以广播一个事件来触发您的插件方法。

app.directive('bxSlider', function($timeout)
{
    return {
        restrict: 'A',
        link: function(scope, element, attrs)
        {
            var slider;
            $timeout(function() {
                slider = element.bxSlider(scope.$eval(attrs.bxSlider));
            }, 1);

            scope.$on('reload-slider', function() {
                slider.reloadSlider();
            });
        }
    }
});

然后在控制器功能中使用$scope.$broadcast('reload-slider')