2015-01-09 9 views
6

मैं एक कोणीय निर्देशक में एक jQuery प्लगइन परिवर्तित कर रहा हूँ, लेकिन अभी भी ठीक से काम नहीं, या (?): सब पर काम नहीं कर रहा।कोणीय, फिक्स्ड साइडबार में jQuery टर्निंग काम नहीं कर रहा

This is the behavior I want to achieve

Here is a jsfiddle also

याद रखें कि मैं यह सब के साथ हासिल करना चाहते हैं, बाएं साइडबार पर व्यवहार जहां 'चिपचिपा' कहते हैं हर जगह है।

मैं jQuery के साथ किया था (मैं कोणीय करने के लिए नया हूँ) और मैं कोणीय के साथ काम करने में यह की आवश्यकता है। कृपया Plunkr Example पर जाएं और देखें, वह व्यवहार, मैं चाहता हूं। अग्रिम धन्यवाद अगर आप में से कुछ लोग मेरी मदद करने के लिए समय लेते हैं। jQuery कोड में

देखो:

$(function() { 
    var offset = $("#sidebar").offset(); 
    var topPadding = 85; 
    $(window).scroll(function() { 
     if ($(window).scrollTop() > offset.top) { 
      $("#sidebar").stop().animate({ 
       marginTop: $(window).scrollTop() - offset.top + topPadding 
      }); 
     } else { 
      $("#sidebar").stop().animate({ 
       marginTop: 50 
      }); 
     }; 
    }); 
}); 

और यहाँ मेरी कोणीय निर्देशक है:

angular.module('capilleira.clickAndGambleWebApp.directives', []) 
    .directive('sticky', function ($window) { 
    return { 
     restrict: 'A', 
     controller: ($scope) 
     link: function (scope, element, attrs) { 
     var raw = element[0], 
      offset = element.offset(), 
      topPadding = 85; 

     angular.element($window).bind('scroll', function() { 
      console.log('SCROOOOOOOOOOOOOLLLL'); 
      if ($window.scrollTop > offset.top) { 
      raw.stop().animate({ 
       marginTop: $window.scrollTop() - offset.top + topPadding 
      }); 
      } 
     }); 
     } 
    } 
    }); 

मेरी निर्देश मुद्दा यह है कि एक बार आप स्क्रॉल करते पर अच्छा है, the console.log दिखाता है।

+1

मेरी अपेक्षा थी कि उन लिंक में से एक लिंक काम कर रहा jQuery संस्करण होगा और एक आपका प्रयास (लेकिन काम नहीं कर रहा) कोणीय कोड होगा। वे दोनों कोणीय कोड के साथ एक ही लिंक होते हैं और यह पूरी तरह स्पष्ट नहीं है कि यह क्या करना है। यदि आपको यह स्पष्ट हो जाता है कि आपको क्या चाहिए (और काम करने वाले jQuery कोड का एक jsfiddle/plunkr शायद इसके साथ एक लंबा रास्ता तय करेगा) तो आपको शायद बेहतर/अधिक सहायता मिलेगी। – Jack

+0

@ जैक मैंने ऐसा किया है जिस तरह से आप कहते हैं लेकिन मुझे नहीं पता कि आखिरी परिवर्तन मैंने क्यों नहीं बचा था। [यह एक लग रहे हैं, मैं इसे फिर से किया था] (http://plnkr.co/edit/xRXOqzaXxg6hVXDhOfV2?p=preview) वहाँ jQuery समारोह है और एक ही script.js में नोटों पर नीचे फ़ाइल आप कोणीय के लिए कोड देखेंगे निर्देशक। कृपया ध्यान दें कि जिस व्यवहार को मैं प्राप्त करना चाहता हूं वह बाएं साइडबार पर एक है जहां कहता है 'टिकी' हर जगह। – TheUnnamed

+1

@MarkRenton जब आप कहते हैं: "इसे कोणीय के साथ काम करने की आवश्यकता है" तो आपका मतलब है कि आपको इसे jQuery के बिना काम करने की ज़रूरत है? अगर jQuery अभी भी लोड हो रहा है तो आप इसे कोणीय के साथ उपयोग कर सकते हैं। तो बस अपने निर्देश में jQuery तैयार कथन के बीच एक ही कोड डालें http://jsbin.com/puhapasaka/3/edit?js – hitautodestruct

उत्तर

1

मैं यह पहले से ही काम कर रहे अपने दोस्तों की है। यह निर्देश सही ढंग से काम कर रहा है

angular.module('capilleira.clickAndGambleWebApp.directives', []) 
.directive('sticky', function($document) { 
    return { 
    restrict: 'A', 
    link: function(scope, element, attrs) { 
     angular.element(document).ready(function() { 
     var offset = element.offset(), 
      topPadding = 85; 
     $document.scroll(function() { 
      if ($document.scrollTop() > offset.top) { 
      element.stop().animate({ 
       marginTop: $document.scrollTop() - offset.top + topPadding 
      }); 
      } else { 
      element.stop().animate({ 
       marginTop: 0 
      }); 
      }; 
     }); 
     }); 
    } 
    }; 
}); 
संबंधित मुद्दे