Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularjs中动态更改数组项_Javascript_Angularjs - Fatal编程技术网

Javascript 在angularjs中动态更改数组项

Javascript 在angularjs中动态更改数组项,javascript,angularjs,Javascript,Angularjs,我想用角度创建时间线。在此时间线中,年份随鼠标滚轮事件而变化。对于鼠标滚轮事件,我使用库。如何通过鼠标滚轮事件更改数组项? 这是我的密码: angular.module('myApp', []) .controller("Slider", function ($scope) { var mouseWheel= document.getElementById('slider'); var hammer1 = Hamster(mouseWheel); $scope.state = { zoom:

我想用角度创建时间线。在此时间线中,年份随鼠标滚轮事件而变化。对于鼠标滚轮事件,我使用库。如何通过鼠标滚轮事件更改数组项? 这是我的密码:

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);
};
angular.module('myApp',[])
.控制器(“滑块”,功能($scope){
var mouseweel=document.getElementById('slider');
var hammer1=仓鼠(鼠标轮);
$scope.state={zoom:1,top:0};
$scope.dragY=0;
$scope.\u calc=函数(状态){
风险值年数=[];
var top=$scope.state.top;
对于(变量i=-4000;i 0){
$scope.zoomOut();//此函数不起作用
}else if(delta<0){
$scope.zoomIn();
}
});
$scope.zoomOut=函数(){
$scope.state.zoom+=10;
$scope.years=$scope.\计算($scope.state);
};

})

我打赌你的仓鼠回调不会触发消化。尝试使用$scope.$apply():

hammer1.控制盘(功能(事件,增量){
$scope.$apply(函数(){
如果(增量>0){
$scope.zoomOut();//此函数不起作用
}else if(delta<0){
$scope.zoomIn();
}
}
});

您必须调用
$scope.$digest();
$scope.$apply();
以便angular知道它应该重新渲染:

hammer1.wheel(function(event, delta){
        if (delta > 0) {
          $scope.zoomOut();  // this function not working
        } else if (delta < 0) {
          $scope.zoomIn();   
        }
        $scope.$digest();
    });
hammer1.控制盘(功能(事件,增量){
如果(增量>0){
$scope.zoomOut();//此函数不起作用
}else if(delta<0){
$scope.zoomIn();
}
$scope.$digest();
});
另见

hammer1.wheel(function(event, delta){
        if (delta > 0) {
          $scope.zoomOut();  // this function not working
        } else if (delta < 0) {
          $scope.zoomIn();   
        }
        $scope.$digest();
    });