【发布时间】:2015-03-02 12:15:43
【问题描述】:
我正在创建一个毕业证书积分计算器,它是一个 SPA 网站,用户在该网站上勾选一个复选框,如果他们已经参加了该科目并输入他们获得的成绩和他们参加该课程的级别。
我已经完全实现了界面以及所有计算功能,但我正在努力寻找一种简单的方法来根据复选框是否被勾选来将主题添加到新数组(称为 takeSubjects)。
这是目前界面的样子。
http://i62.tinypic.com/28rjg2d.png
我想将成绩作为一个字符串(然后转换为正确的分数)。我还需要考虑级别(单选按钮),这也将有助于计算分数。最后是采取(复选框)布尔值,它将决定是否将主题添加到要计算到总分的数组中。
我没有大量的 angularJS 经验,但我正在使用工厂来保存我的功能。这是我到目前为止的Javascript。
factory.getSubjects = function () {
return subjects;
};
/*
factory.getTakenSubjects = function () {
return
};
factory.getGrade = function () {
scope.subjects.push(
{
grade: $scope.newGrade.grade;
});
}
factory.total = function (subjects, levels,grades) {
var total=0;
for(var i=0;i<subjects.length;i++){
total+=gradeToPoints(subjects[i],levels[i],grades[i]);
}
return total;
};
factory.gradeToPoints= function(subject,level,grade){
var results = 0;
if(level==="Higher"){
results = higherGradeToPoints(grade);
if (subject === "Mathematics" && results>0){//if the subject is maths and they have gotten points then add 25 more to it
results += 25;
}
}else if(level==="Lower"){
results = lowerGradeToPoints(grade);
}else{//level is foundation
if(subject === "Mathematics" || subject === "Irish"){//only two subject allow for this option so check it.
results = foundGradeToPoints(grade);
}
}
return results;
};
factory.foundationGradeToPoints = function (grade) {
switch (grade){
case "A1":
return 20;
case "A2":
return 15;
case "B1":
return 10;
case "B2":
return 5;
}
return 0;
};
factory.lowerGradeToPoints = function (grade) {
switch (grade){
case "A1":
return 60;
case "A2":
return 50;
case "B1":
return 45;
case "B2":
return 40;
case "B3":
return 35;
case "C1":
return 30;
case "C2":
return 25;
case "C3":
return 20;
case "D1":
return 15;
case "D2":
return 10;
case "D3":
return 5;
}
return 0;
};
factory.higherGradeToPoints = function (grade) {
switch (grade){
case "A1":
return 100;
case "A2":
return 90;
case "B1":
return 85;
case "B2":
return 80;
case "B3":
return 75;
case "C1":
return 70;
case "C2":
return 65;
case "C3":
return 60;
case "D1":
return 55;
case "D2":
return 50;
case "D3":
return 45;
}
return 0;
};
*/
return factory;
})
.controller('SimpleController', function($scope, simpleFactory) {
$scope.subjects = simpleFactory.getSubjects();
});
【问题讨论】:
-
您需要将模型附加到复选框视图。你做到了吗?
-
您可能需要将数组添加到控制器的作用域
-
将一个数组添加到您在从控制器调用服务方法(即工厂)时使用的控制器以计算内容。 Inspiration
-
@raneshu 附加模型是什么意思,它只是页面的单个视图。我主要使用 angularjs 来实现这一切的模块化。
-
他可能指的是 Ngmodel
标签: javascript angularjs twitter-bootstrap checkbox user-input