使用jQuery插件和Angular

时间:2014-07-03 23:53:33

标签: javascript jquery angularjs

我知道理想情况下jQuery插件应该重新打包成指令,但我不确定我对这种方法的看法。首先,这意味着,每当插件更新时,它不仅仅是拉动新的回购,而是编辑指令。

我怎样才能将角度模块与jquery插件分开,或者通过它的api与jquery插件进行通信。 requirejs或类似的库是否适用于此?

1 个答案:

答案 0 :(得分:0)

只要插件保持其api,您的指令应该继续按照需要工作。关于jQuery插件的指令实际上只是采用Angular Way

的包装器

由于大多数jQuery插件是通过对特定dom选择的单个函数调用(通常传入options对象)启动的,因此您使用的指令样板非常常见。

通过采用角度方式,您正在做的是抽象jQuery插件功能,以允许更模块化和声明性的html。除了传入任何范围值来控制插件更新(如果它是本机指令你还会这样做),基本指令如下:

angular.directive('jqWrapper', ['$timeout', function($timeout){
    return {
        restrict: 'A',
        link: function(scope, elem, attrs) {

            $timeout(function(){
                elem.myJQueryFunction();
            });
        }
    };
}]);

显然选项和手表可以在需要时稍微复杂一点,但上面的指令可能适用于许多jQuery插件。另请注意使用$timeout确保在渲染后应用插件。

所以基本上不要将指令视为使jQuery插件工作所需的东西。将指令视为额外的功能,可将您所需的jQuery代码转换为更模块化和有用的代码。