为jquery代码创建angularJs指令

为jquery代码创建angularJs指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我对AngularJs是新手。我有一个jquery代码,我计划创建一个AngularJs指令。如何在AngularJs指令中包装jquery代码。我只想使用相同的jquery代码,但想通过AngularJs指令调用代码。请让我知道这在AngularJs中是否可行 我正在用两个jquery部分更新帖子,我计划创建一个指令: $('#pie-chart1').highcharts({ title: { text: 'Exporting module is loa

我对AngularJs是新手。我有一个jquery代码,我计划创建一个AngularJs指令。如何在AngularJs指令中包装jquery代码。我只想使用相同的jquery代码,但想通过AngularJs指令调用代码。请让我知道这在AngularJs中是否可行

我正在用两个jquery部分更新帖子,我计划创建一个指令:

     $('#pie-chart1').highcharts({
       title: {
       text: 'Exporting module is loaded but buttons are disabled'
       },
       xAxis: {
         categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
       },

       series: [{
       data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]        
      }],

      navigation: {
        buttonOptions: {
        enabled: false
      }
    }
  });

这是可能的,但当然,没有银弹。有一些jquery的东西很容易移植到angular,还有一些更难。一般来说,你可以做任何事情,但困难程度可能会有所不同

编辑:在开始做你正在做的事情之前,你可能想查看以下内容:


您想要实现的目标已经实现,因此我建议您不要重新发明轮子或使用他们的指令,或者至少将其作为起点。

在指令中,您可以使用jQuery。事实上,如果在Angular.js之前加载了jQuery,那么传递到链接函数中的
元素就已经是jQuery对象了

app.directive("myDirective", function() {
    return {
        link: function(scope, element) {
            element.addClass("jquery"); // or other jQuery code
        }
    };
});
请注意,如果jQuery未在Angular.js之前加载,则该元素将包装在jqLite中,jQuery的子集随Angular.js一起提供

2014年8月8日编辑:


在你的问题中,我看到你在使用海图。这个编辑现在可能有点晚了,但是,也许快速浏览一下在指令中使用Highcharts的小应用程序会给你一些额外的见解:

这个问题可能会有帮助:或者这篇博文:请查看我更新的问题,其中包含我计划与AngularJs集成的实际jquery代码。你的更新不会引入任何需要的相关信息答案也需要更新。据我所知,在angular指令中使用jquery操作DOM被认为是错误的做法,因为angular在scope.digest()上编译HTML,如果你在摘要之外修改DOM,那么你可能会在你的文档中引起疯狂的问题application@britztopher当您使用异步代码时,
$digest
循环需要手动触发,但简单地添加一个类是无害的。“无害”一词的确切位置不在我的回答范围之内。OP要求在指令中封装jQuery代码,这是最有可能的。事实上,我更愿意在指令中封装大多数,例如jqueryui插件,而不是直接在控制器中使用它们。就我而言,一个明智的方法来解决什么是好的,什么是走得太远是所有人都需要的。请查看我更新的问题,其中包含我计划与AngularJsYep集成的实际jquery代码,检查现有的highcharts指令: