Javascript 使用jQuery插件

Javascript 使用jQuery插件,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我知道理想情况下jQuery插件应该重新打包成指令,但我不确定我对这种方法的感觉如何。首先,这意味着,每当插件被更新时,不仅要拉一个新的回购协议,还要编辑指令 我如何将angular模块与jquery插件分开,也许可以通过其api与jquery插件通信。requirejs或类似的库是否适用于此?只要插件维护它们的api,您的指令就应该继续按需要工作。jQuery插件上的指令实际上只是采用角度方式的包装器 由于大多数jQuery插件都是通过对特定dom选择的单个函数调用(通常传递一个options

我知道理想情况下jQuery插件应该重新打包成指令,但我不确定我对这种方法的感觉如何。首先,这意味着,每当插件被更新时,不仅要拉一个新的回购协议,还要编辑指令


我如何将angular模块与jquery插件分开,也许可以通过其api与jquery插件通信。requirejs或类似的库是否适用于此?

只要插件维护它们的api,您的指令就应该继续按需要工作。jQuery插件上的指令实际上只是采用
角度方式的包装器

由于大多数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代码转换为更模块化、更有用的功能