Angular指令的元素

时间:2016-09-30 00:28:12

标签: javascript jquery angularjs angular-directive

我有这个指令:

function dndDirective($timeout) {

  return {
    template: '<div class="dndComponent"> Title: {{title}} </div>',
    scope: {
      title: '<'
    },
    compile: myCompile
  };

      function myCompile(tElement, tAttrs, transclude) {
        return {
          pre: function postLink($scope, element, attrs, transclude) {

            $scope.$watchGroup(['title'], function(newVals) {
              $timeout(function() {
                jQuery('.dndComponent').first().myPlugin();
                jQuery(element).myPlugin();
              });
            })
          }
        }
      }

为什么jQuery('.dnd').first()jQuery(element)不同?它们有不同的上下文,我的jQuery插件只能使用第一个选项。

1 个答案:

答案 0 :(得分:0)

jQuery(element)返回使用该指令的元素的jQuery包装器。 jQuery('.dndComponent').first()返回该类的第一个元素。

假设该指令仅使用一次(不依赖于此),则选择器返回element的子项,element是&#39; .dndComponent&#39;的父项。 ;

===

还要考虑使用$(element).find(&#39; .dndComponent&#39;),因为这样你可以使用你的指令N次并且它总是有效,否则它将始终返回.dndComponent第一条指令。