javascript - 在 angularjs 中动态更改数组项

标签 javascript angularjs

我想以 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/

相关文章:

javascript - 带有 html 内容的工具提示出现在右侧,有工作代码,但它仅适用于 1 个提示,我希望它是动态的

javascript - 弹出 :hover cannot be dismissed with blur()

javascript - DataTables rows.add(array).draw() 被多次调用

javascript - 使用 jquery/Angularjs 清除浏览器缓存

javascript - 你如何使用 Angular javascript获取表单的值(value)?

javascript - 如果文本比 div 宽,jQuery 添加换行符

JavaScript : Check if any of the element in array is null or empty (Return True-False)

javascript - $scope 变量不会在 $interval 函数内更新

javascript - 使用 java Rest api 作为后端的 Angular JS 登录

javascript - 更改链接 URL 中的路径名,同时保持查询字符串不变