我想以 Angular 创建时间线。在此时间轴中,年份随鼠标滚轮事件而变化。对于鼠标滚轮事件,我使用 hamster.js图书馆。如何通过鼠标滚轮事件更改数组项? 这是我的代码:
angular.module('myApp', [])
.controller("Slider", function ($scope) {
var mouseWheel= document.getElementById('slider');
var hammer1 = Hamster(mouseWheel);
$scope.state = { zoom: 1, top: 0 };
$scope.dragY = 0;
$scope._calc = function(state) {
var years = [];
var top = $scope.state.top;
for (var i = -4000; i <= 2015; i += state.zoom) {
var obj = {top: top, year: i};
years.push(obj);
top += 40;
}
return years;
}
$scope.years = $scope._calc($scope.state);
hammer1.wheel(function(event, delta){
if (delta > 0) {
$scope.zoomOut(); // this function not working
} else if (delta < 0) {
$scope.zoomIn();
}
});
$scope.zoomOut= function () {
$scope.state.zoom += 10;
$scope.years = $scope._calc($scope.state);
};
})
最佳答案
我敢打赌,你的仓鼠回调不会触发摘要。尝试使用 $scope.$apply():
hammer1.wheel(function(event, delta){
$scope.$apply(function () {
if (delta > 0) {
$scope.zoomOut(); // this function not working
} else if (delta < 0) {
$scope.zoomIn();
}
}
});
关于javascript - 在 angularjs 中动态更改数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28781982/