我知道理想情况下jQuery插件应该重新打包成指令,但我不确定我对这种方法的看法。首先,这意味着,每当插件更新时,它不仅仅是拉动新的回购,而是编辑指令。
我怎样才能将角度模块与jquery插件分开,或者通过它的api与jquery插件进行通信。 requirejs或类似的库是否适用于此?
答案 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代码转换为更模块化和有用的代码。