将Fancybox插件转换为Angular指令

时间:2015-03-29 01:03:36

标签: jquery angularjs iframe angularjs-directive fancybox

我正在使用ng-repeat网址添加到每个按钮中的 iframe {{item.details}},这样做正常。
HTML:

<a class="various small_button shadow none" fancybox ng-href="{{item.details}}">View Details</a>

问题是为fancybox创建指示,以便在单击按钮时创建lightbox iframe。我试图通过查看这些帖子post1post 2以及其他一些帖子来解决此问题,但它们很有帮助但在这种情况下不是解决方案。

Fancybox指令:

app.directive('fancybox', function(){
    return{
        restrict: 'e',

        link: function(scope, element, attrs){

            element.fancybox({  
                type        :'iframe',
                scrolling   : 'no',
                maxWidth    : 800,
                maxHeight   : 400,
                fitToView   : true,
                width       : '70%',
                height      : '70%',
                autoSize    : false,
                closeClick  : true,
                openEffect  : 'none',
                closeEffect : 'none',
                source      :function(current){
                    return $(current.element);

                }
            });
        }
    }
});

使用jQuery,我使用类“.various”和“.ad”调用fancybox。我想以相同的方式调用fancybox仅使用angular。

原创花式jQuery:

jQuery(document).ready(function(){
//fancybox window script
    $(".various").fancybox({
        type        :'iframe',
        scrolling   : 'no',
        maxWidth    : 800,
        maxHeight   : 400,
        fitToView   : true,
        width       : '70%',
        height      : '70%',
        autoSize    : false,
        closeClick  : true,
        openEffect  : 'none',
        closeEffect : 'none',
    });

    $(".ad").fancybox({
        maxWidth    : 210,
        maxHeight   : 140,
        fitToView   : true,
        width       : '100%',
        height      : '100%',
        autoSize    : false,
        closeClick  : true,
        openEffect  : 'none',
        closeEffect : 'none'
    });


});//set up close

1 个答案:

答案 0 :(得分:5)

您可以使用:

app.directive('fancybox', function(){
  return {
    restrict: 'A',

    link: function(scope, element, attrs){
      $(element).fancybox({  
        type        :'iframe',
        scrolling   : 'no',
        maxWidth    : 800,
        maxHeight   : 400,
        fitToView   : true,
        width       : '70%',
        height      : '70%',
        autoSize    : false,
        closeClick  : true,
        openEffect  : 'none',
        closeEffect : 'none'
      });
    }
  }
});

属性restrict必须是A(大写),因为在您的示例中,指令是属性。 E(大写)是指令是元素的时候。您可以使用组合:restrict: 'AE'More information

您需要使用$(element).fancybox({ ... }),因为fancybox是一个jquery插件。