在angularjs中动态更改数组项
change array Items dynamically in 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);
};
})
我敢打赌,您的Hamster回调不会触发摘要。尝试使用$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();
}
}
});
您必须调用$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();
});
另请参阅详细解释的摘要和应用
相关文章:
- 如何向JSON数组动态添加属性
- Javascript数组动态
- 使用RequireJS从数组动态加载模块
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 基于PHP数组动态附加表单
- jQuery:从带有 for 循环的数组动态构建表单
- JSon 数组动态列填充 AngularJs
- 使用 Javascript 创建变量数组(动态,下拉)
- 从数组动态构建表
- Ext 3.4-如何使用本地数组动态填充组合框
- jquery将数组动态地输入到slug
- 用字符串和字符串数组动态填充json对象
- 如何在Meteor中使用数组动态渲染多个模板
- 如何从json字段数组动态创建一个没有jquery的表单
- 用数组动态填充多维数组
- Jquery数组动态初始化
- 根据json创建的2d数组动态填充表
- Knockout:基于未知长度的数组动态创建可观察对象
- 使用数组动态注册事件
- jQuery多维数组(动态键)-不能设置属性undefined