Angularjs 将CSS Stick插件转换为Angular指令

Angularjs 将CSS Stick插件转换为Angular指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我正在尝试使用这个带有角度指令的粘性CSS插件。我试着把这段代码包装成一个指令,但还没有成功 这是插件的代码笔,没有角度- 这就是我目前所拥有的 任何帮助或指导都将不胜感激 app.directive('sticky', function() { return function stickyTitles(stickies) { this.load = function() { stickies.each(function(){ var

我正在尝试使用这个带有角度指令的粘性CSS插件。我试着把这段代码包装成一个指令,但还没有成功

这是插件的代码笔,没有角度-

这就是我目前所拥有的

任何帮助或指导都将不胜感激

app.directive('sticky', function() {

return function stickyTitles(stickies) {

this.load = function() {

          stickies.each(function(){

                var thisSticky = jQuery(this).wrap('<div class="followWrap" />');
                    thisSticky.parent().height(thisSticky.outerHeight());

                jQuery.data(thisSticky[0], 'pos', thisSticky.offset().top);

          });
    }

    this.scroll = function() {

          stickies.each(function(i){                

                var thisSticky = jQuery(this),
                      nextSticky = stickies.eq(i+1),
                      prevSticky = stickies.eq(i-1),
                      pos = jQuery.data(thisSticky[0], 'pos');

                if (pos <= jQuery(window).scrollTop()) {

                      thisSticky.addClass("fixed");

                      if (nextSticky.length > 0 && thisSticky.offset().top >= jQuery.data(nextSticky[0], 'pos') - thisSticky.outerHeight()) {

                            thisSticky.addClass("absolute").css("top", jQuery.data(nextSticky[0], 'pos') - thisSticky.outerHeight());

                      }

                } else {

                      thisSticky.removeClass("fixed");

                      if (prevSticky.length > 0 && jQuery(window).scrollTop() <= jQuery.data(thisSticky[0], 'pos')  - prevSticky.outerHeight()) {

                            prevSticky.removeClass("absolute").removeAttr("style");

                      }

                }
            });         
    }
}

return function(){

    var newStickies = new stickyTitles(jQuery(".followMeBar"));

    newStickies.load();

    jQuery(window).on("scroll", function() {

          newStickies.scroll();

    });
};

});
app.directive('sticky',function(){
返回函数stickyTitles(stickies){
this.load=函数(){
粘滞物。每个(函数(){
var thisticky=jQuery(this).wrap(“”);
thisticky.parent().height(thisticky.outerHeight());
jQuery.data(thisticky[0],'pos',thisticky.offset().top);
});
}
this.scroll=函数(){
粘滞物。每个(函数(i){
var thisticky=jQuery(this),
nextSticky=粘滞物等式(i+1),
prevSticky=粘滞物等式(i-1),
pos=jQuery.data(thisticky[0],'pos');
if(pos 0&&thisticky.offset().top>=jQuery.data(nextSticky[0],'pos')-thisticky.outerHeight()){
thisticky.addClass(“绝对”).css(“top”,jQuery.data(nextSticky[0],“pos”)-thisticky.outerHeight());
}
}否则{
thisticky.removeClass(“固定”);
如果(prevSticky.length>0&&jQuery(window).scrollTop()请尝试以下操作:

 <sticky>
  <div class="followMeBar">a</div>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <div class="followMeBar">b</div>
 </sticky>

A.










B
指令:

app.directive('sticky', function() {

  var stickyTitles = function (stickies) {

    this.load = function() {

      stickies.each(function() {

        var thisSticky = jQuery(this).wrap('<div class="followWrap" />');
        thisSticky.parent().height(thisSticky.outerHeight());

        jQuery.data(thisSticky[0], 'pos', thisSticky.offset().top);

      });
    }

    this.scroll = function() {

      stickies.each(function(i) {

        var thisSticky = jQuery(this),
          nextSticky = stickies.eq(i + 1),
          prevSticky = stickies.eq(i - 1),
          pos = jQuery.data(thisSticky[0], 'pos');

        if (pos <= jQuery(window).scrollTop()) {

          thisSticky.addClass("fixed");

          if (nextSticky.length > 0 && thisSticky.offset().top >= jQuery.data(nextSticky[0], 'pos') - thisSticky.outerHeight()) {

            thisSticky.addClass("absolute").css("top", jQuery.data(nextSticky[0], 'pos') - thisSticky.outerHeight());

          }

        } else {

          thisSticky.removeClass("fixed");

          if (prevSticky.length > 0 && jQuery(window).scrollTop() <= jQuery.data(thisSticky[0], 'pos') - prevSticky.outerHeight()) {

            prevSticky.removeClass("absolute").removeAttr("style");

          }

        }
      });
    }
  }

  return {
    restrict: 'E',
    link: function(scope, element, attrs) {
      var newStickies = new stickyTitles($(element).find(".followMeBar"));

      newStickies.load();

      jQuery(window).on("scroll", function() {

        newStickies.scroll();

      });
    }
  };
app.directive('sticky',function(){
var stickyTitles=函数(粘滞){
this.load=函数(){
粘滞物。每个(函数(){
var thisticky=jQuery(this).wrap(“”);
thisticky.parent().height(thisticky.outerHeight());
jQuery.data(thisticky[0],'pos',thisticky.offset().top);
});
}
this.scroll=函数(){
胶粘物。每个(功能(i){
var thisticky=jQuery(this),
nextSticky=粘滞物等式(i+1),
prevSticky=粘滞物等式(i-1),
pos=jQuery.data(thisticky[0],'pos');
if(pos 0&&thisticky.offset().top>=jQuery.data(nextSticky[0],'pos')-thisticky.outerHeight()){
thisticky.addClass(“绝对”).css(“top”,jQuery.data(nextSticky[0],“pos”)-thisticky.outerHeight());
}
}否则{
thisticky.removeClass(“固定”);

如果(prevSticky.length>0&&jQuery(window).scrollTop(),如果可能的话,我正在尝试将其用于ng重复内容。任何帮助都将非常棒。我的新问题位于