我构建了此public Car() {
BeanProvider.injectFields(this);
}
来控制页面上的directive
效果
affix
它工作正常,除非因为当我在页面上使用2个或更多元素时,效果(或者在本例中为类)被应用于页面上的所有指令。即使我使用不同的指令名称,例如:.directive('Affix', ['$window', function($window) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.width = element.prop('offsetWidth');
var elWidth = scope.width + 'px',
elChild = angular.element(element[0].querySelector(':first-child'));
elChild.css('width', elWidth);
angular.element($window).bind("scroll", function() {
var myElem = element[0];
yPosition = 0;
function getPosition(element) {
while(element) {
yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
element = element.offsetParent;
}
}
getPosition(myElem);
if (yPosition >= 0) {
elChild.removeClass('affix');
} else if ( yPosition < 0) {
elChild.addClass('affix');
};
});
}
};
}])
和affix-me
,结果也是一样的。
我需要这样做,因为它的工作方式。当它应该粘贴在页面上时,它会将元素应用于元素,因此正在应用具有affix-zero
的类affix
。但在这种情况下,我有一个元素需要距离顶部25px。
假设我使用了2个指令,例如position: fixed, top:0
和affixMe
。
affixOther
有这段代码的地方:
affixMe
if (yPosition >= 0) {
elChild.removeClass('affix');
} else if ( yPosition < 0) {
elChild.addClass('affix');
};
有以下代码:
affixOther
对于一些if (yPosition >= 24) {
elChild.removeClass('affixOther');
} else if ( yPosition < 24) {
elChild.addClass('affixOther');
};
我注意到yPosition被调用正确,直到第一个元素到达顶部的点。
示例:
当console.log
为Elem.A
时; yPosition = 0
应该有Elem.B
。但它从121到0。
有没有人知道如何解决这个问题? Ps。:我想保持纯粹的AngularJs / JS。没有Jquery。