0
我試圖創建一個指令,在元素的scrollTop更改時更新作用域變量。有了這個指令,我希望能夠同步兩個不同元素的滾動位置。如何更新作爲屬性傳入的作用域變量
這是我到目前爲止有:
module.directive('scrollTop', [function() {
return {
link: function($scope, element, attrs) {
var scrollTop = $scope.$eval(attrs.scrollTop);
element.bind('scroll', function() {
$scope.$apply(function() {
scrollTop = element.prop('scrollTop');
console.log("scrollTop", scrollTop);
});
});
attrs.$observe('scrollTop', function(value){
console.log('detected change', value);
element.prop('scrollTop', value);
});
}
};
}]);
和這裏的噶測試我寫它的一部分:
it('scrolls', function() {
var element = angular.element('<div scroll-top="scrollTopScopeVar" style="height: 100px; overflow-y: scroll;"><div style="height: 200px;"></div></div>');
$compile(element)($scope);
element.appendTo(document.body);
$scope.$digest();
element.prop('scrollTop', 42);
element.trigger('scroll');
expect($scope.scrollTopScopeVar).toBe(42);
});
的問題是,正在傳遞的scrollTop的變量在(scrollTopScopeVar)中從不更新。我很確定我的問題是我只更新對該變量的引用,而沒有真正更改該值,但我不知道如何改變它。
感謝您的幫助!