Angularjs:访问范围变量数组并计算平均值
Angularjs: accessing scope variable array and calculating average
抱歉,如果问题与标题有点抽象。我将尝试在这里解释它,并提供带有相关代码的要点。
我有一个通过AngularJS获取的JSON api。这基本上是一个具有多个任务的项目。我想遍历我的 $scope.projects 变量(在我的项目控制器中)中的任务,并获取每个任务中的所有"进度"值。然后我想计算它们的平均值,以给出项目本身的整体进度,并将其分配给要在模板中使用的$scope变量。
无论我尝试什么,我似乎都无法访问任务数组,我不知道为什么。所以我认为在这里寻求一些建议可能是一个不错的选择。任何帮助将不胜感激。
要点:https://gist.github.com/Tasemu/8002741
.JS
App.controller('ProjectCtrl', ['$scope', 'Project', 'Task', '$routeParams', '$location', function($scope, Project, Task, $routeParams, $location) {
$scope.updateProjects = function() {
if (!$routeParams.id) {
Project.query(function(data) {
$scope.projects = data;
});
} else {
$scope.projects = Project.get({id: $routeParams.id})
}
};
$scope.deleteProject = function(project) {
Project.delete({id: project.id}, function() {
$scope.updateProjects({id: project.id});
$location.path('/');
});
};
$scope.deleteTask = function(task) {
Task.delete({id: task.id}, function() {
$scope.updateProjects({id: task.id});
});
};
$scope.updateProject = function(formData) {
$scope.projects.name = formData.name;
$scope.projects.description = formData.description;
$scope.projects.client = formData.client;
$scope.projects.due = formData.due;
$scope.projects.$update({id: formData.id}, function() {
$location.path('/');
});
};
$scope.saveProject = function(project) {
Project.save({}, project, function() {
$location.path('/');
});
};
$scope.updateProjects();
$scope.progs = [];
for (var i = 0; i > $scope.projects.tasks.length; i++) {
progs.push($scope.projects.tasks.array[i].progress);
};
}]);
杰伦
{
id: 1,
name: "Project 1",
description: "this project",
client: "monty",
due: "2013-12-15",
tasks: [
{
id: 2,
name: "Task 2",
progress: 22,
project_id: 1,
created_at: "2013-12-17T03:08:53.849Z",
updated_at: "2013-12-17T05:06:31.602Z"
},
{
id: 1,
name: "Task 1",
progress: 75,
project_id: 1,
created_at: "2013-12-17T03:08:53.845Z",
updated_at: "2013-12-17T05:25:50.405Z"
}
],
created_at: "2013-12-17T03:08:53.719Z",
updated_at: "2013-12-17T06:57:52.699Z"
}
.JS
App.factory('Project', function($resource) {
return $resource(
'/api/v1/projects/:id.json',
{id: '@id'},
{
update: {
method: 'PUT',
params: { id: '@id' },
isArray: false
}
}
);
});
如果您需要更多信息,请随时询问!
您必须延迟进度计算(project_controller.js
中的第 46 行到 48 行),直到数据完全加载。将计算提取到一个新方法中,并在第 6 行的回调中调用此新方法,并在必须在第 9 行创建的新回调中调用此新方法。
您正在尝试在project.tasks
准备就绪之前访问它。我建议您将计算包装在一个函数中,并在检索/更新项目时在成功回调中调用它。
$scope.updateProjects = function() {
if (!$routeParams.id) {
Project.query(function(data) {
$scope.projects = data;
$scope.calculateTasks();
});
} else {
$scope.projects = Project.get({id: $routeParams.id})
}
};
...
$scope.calculateTasks = function () {
$scope.progs = [];
for (var i = 0; i > $scope.projects.tasks.length; i++) {
$scope.progs.push($scope.projects.tasks.array[i].progress);
};
}
$scope.updateProjects();
相关文章:
- 计算数据点阵列与平均值的最大距离,并返回相关数据点
- Angularjs:访问范围变量数组并计算平均值
- 从javascript数组计算平均值
- 使用 JavaScript 计算表中的平均值
- 如何在 JavaScript 中使用 while 循环计算平均值
- 计算数组中点的平均值-Javascript
- 计算显示在d3圆环图中心的平均值
- 计算多维数组的平均值
- 在数组对象上迭代并计算平均值
- 使用Javascript从输入数组中查找平均值-计算不正确
- 计算数组中对象属性的平均值
- 计算平均值并转换数据表javascript
- 在 JavaScript 中使用 for 循环计算平均值
- 按组/列计算移动平均值-javascript
- 如何在javascript或下划线中计算json数据的平均值
- 计算不回发的一组数字的平均值
- 计算JavaScript中多维数组的总体平均值
- 使用一个简单的网页表格计算平均值
- 使用MongoDB Aggregation计算多个平均值
- 计算猫鼬钩子内的平均值