Javascript 将jQuery转换为角度固定的边栏不起作用(?)
我正在将jQuery插件转换为Angular指令,但仍然无法正常工作,或者:根本无法工作 请记住,我想要实现的只是左侧边栏上的行为,其中到处都写着“粘性” 我是用jQuery实现的(我是Angular的新手),我需要让它使用Angular。请去看看,那种行为,就是我想要的。如果你们中的一些人花时间帮助我,请提前感谢 看看jQuery代码:Javascript 将jQuery转换为角度固定的边栏不起作用(?),javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在将jQuery插件转换为Angular指令,但仍然无法正常工作,或者:根本无法工作 请记住,我想要实现的只是左侧边栏上的行为,其中到处都写着“粘性” 我是用jQuery实现的(我是Angular的新手),我需要让它使用Angular。请去看看,那种行为,就是我想要的。如果你们中的一些人花时间帮助我,请提前感谢 看看jQuery代码: $(function() { var offset = $("#sidebar").offset(); var topPadding =
$(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
});
}
});
}
}
});
我的指令很好,一旦你滚动,console.log就会显示出来。我的朋友们已经在使用它了。这是正常工作的指令
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
});
};
});
});
}
};
});
我的期望是,其中一个链接将是工作的jQuery版本,另一个链接将是您尝试的(但不工作的)angular代码。它们似乎都与角度代码有着相同的联系,而且还不完全清楚它应该做什么。如果你清楚自己需要什么,你可能会得到更好/更多的帮助(而jQuery代码的jsfiddle/plunkr可能会对你有很大帮助)。@Jack我按照你说的方式做了,但我不知道为什么我做的最后一次更改从未保存。在同一个script.js文件中的notes上有jQuery函数和下面的函数,您将看到Angular指令的代码。请注意,我想要实现的行为是左侧边栏上的行为,其中到处都是“STICKY”。@MarkRenton当你说“需要让它与Angular一起工作”时,你的意思是需要让它在没有jQuery的情况下工作?如果仍在加载jQuery,则可以将其与angular一起使用。因此,只需在指令raw中的jqueryready语句之间插入相同的代码,即原生Javascript dom元素,我相信stop()和animate()需要jQuery包装的元素才能工作。此外,if子句if($window.scrollTop>offset.top)=>if($window.scrollTop()>offset.top)中缺少()