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();
});