218

我想知道将 jQuery 插件集成到我的 Angular 应用程序中的正确方法是什么。我找到了几个教程和截屏视频,但它们似乎迎合了特定的插件。

例如: http ://amitgharat.wordpress.com/2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/ http://www.youtube.com/watch?v=8ozyXwLzFYs

我应该像这样创建一个指令 -

App.directive('directiveName', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            $(element).'pluginActivationFunction'(scope.$eval(attrs.directiveName));
        }
    };
}); 

然后在 html 中调用脚本和指令?

<div directiveName ></div>
<script type="text/javascript" src="pluginName.js"></script>

提前谢谢

4

2 回答 2

144

是的,你是对的。如果您使用的是 jQuery 插件,请不要将代码放在控制器中。而是创建一个指令并将您通常拥有的代码放入指令的link函数中。

您可以查看文档中的几点。你可以在这里找到它们:
常见的陷阱

正确使用控制器

确保当您在视图中引用脚本时,您最后引用它 - 在引用 angularjs 库、控制器、服务和过滤器之后。

编辑:而不是使用$(element),您可以angular.element(element)在使用 AngularJS 和 jQuery 时使用

于 2013-06-05T08:43:54.890 回答
0

我已经有 2 种情况,指令和服务/工厂表现不佳。

场景是我有(有)一个指令,该指令具有服务的依赖注入,并且从指令中我要求服务进行 ajax 调用(使用 $http)。

最后,在这两种情况下,ng-Repeat 都没有归档,即使我给了数组一个初始值。

我什至试图用一个控制器和一个孤立的范围来制定一个指令

只有当我将所有东西都移到控制器上并且它像魔术一样工作时。

关于这里的例子Initialising jQuery plugin (RoyalSlider) in Angular JS

于 2015-09-10T09:38:17.507 回答