如何在AngularJS指令中正确包装一次jquery调用?

时间:2014-10-11 01:14:22

标签: javascript jquery angularjs angularjs-directive

我有一个转换

的简单指令
<a caracteristic="caracteristics.strength"></a>

使用正确的值进行更精细的标记:

template.html

<a ng-href="regles#{{ caracteristic.name | lowercase }}" class="ui mini {{ caracteristic.color }} label" data-title="{{ caracteristic.name }}" data-content="{{ caracteristic.description }}">{{ caracteristic.name | uppercase}}</a>

这是指令:

'use strict';

angular.module('myApp')
    .directive('caracteristic', function() {
        return {
            templateUrl: 'components/caracteristic/caracteristic.html',
            restrict: 'EA',
            scope: {
                caracteristic: '='
            },
            replace: true,
            link: function() {
                $('.mini.label').popup({
                    transition : 'fade up',
                    variation : "large"
                });
            }
        };
    });

所以基本上我的模型不会改变,如果我用我的指令渲染两个标签,$(...)。popup将被调用两次。

如何只加载一次?

PS:我是angularJS中的新手,现在也很新手将这个jQuery插件转换为原生的Angular。如果我完全错了,请加油! ;)

1 个答案:

答案 0 :(得分:0)

弹出代码似乎与你的特征指令完全分开,所以我不确定你为什么要把它放在那里。您应该寻找创建弹出指令:

app.directive('popup', function() {
    return function (scope, elem) {
        elem.popup({
            transition : 'fade up',
            variation : "large"
        });
    };
});

然后将其附加到要弹出的元素:

<div popup class="mini label"></div>