我正在创建一个树视图,显示员工尚未填写、已开始或已完成的表单数量。可以有多个嵌套级别。
对于一个简单的例子,行是:
2014年:失踪:3,started=7,completed=7
无名氏: missing=2,started=3,completed=5
菲尔·史密斯: missing=1,started=4,completed=2
如果我对员工进行过滤呢?然后,我希望丢失、开始和完成的计数更改为年度行。如何使用ng-重复动态计算这些变量?
发布于 2014-11-11 06:33:14
您将需要计算控制器中的小计。您的问题是,您希望根据应用在视图上的筛选器更新小计。您可以通过将$filter注入控制器来实现这一点。
看一看这里的plunk:http://plnkr.co/edit/JwUOzm5u3G7379I1W6hk?p=preview
我在输入框中创建了一个过滤器。尝试更改文本,小计将相应更新。在这种情况下,我在视图和控制器中都使用了' filter‘过滤器,以便视图和小计同时更新。
代码如下:
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@*" data-semver="1.3.1" src="//code.angularjs.org/1.3.1/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="app">
<div ng-controller="mainCtrl as main">
<input type="text" ng-model="main.empName" placeholder="name filter">
<div ng-repeat="year in main.data">
{{year.yearNum}}:{{main.calculateTotal(year.yearNum)}}
<div ng-repeat="employee in year.employees|filter:main.empName">
{{employee.name}} : {{employee.cost}}
</div>
</div>
</div>
<script>
angular.module('app',[])
.controller('mainCtrl',function($filter){
var main=this;
main.calculateTotal=function(yearNum){
var data=main.data;
var total=0;
for(var i=0;i<data.length;i++){
if(data[i].yearNum==yearNum)
{
var employees=$filter('filter')( main.data[i].employees, main.empName );
for(var j=0;j<employees.length;j++){
total+=employees[j].cost;
}
}
}
return total;
}
main.data=[
{
yearNum:2012,
employees:[
{
name:"jane",
cost:200
},
{
name:"jow",
cost:400
}
]
},
{
yearNum:2013,
employees:[
{
name:"jane",
cost:250
},
{
name:"jow",
cost:450
}
]
}
];
});
</script>
</body>
</html>
https://stackoverflow.com/questions/26857300
复制相似问题