这是我使用AngularJS的第一个项目,不幸的是,它并不是一个温和的介绍。可以说,我不得不"立即行动"。
我的任务是建立一个可定制的调查表格,其中的问题定义是从数据库加载的。我已经设法得到这个工作,在很大程度上,感谢这个角动态表单项目。现在,我需要为调查问题添加加权评分,以便调查答案可以生成总体得分。
我的数据结构基本上是这样的:
[{
"title": "Survey title",
"active": true,
"form": {
"FocusQuestions": {
"type": "fieldset",
"title": "Focus area",
"scoreWeight": 30,
"fields": [{
"AgeGroup": {
"type": "select",
"label": "What is the age group?",
"options": {
"1": "Infants (0 - 2yrs)",
"2": "Toddlers (2 - 4yrs)",
"3": "Children" (4 - 13yrs)"
},
"maxScore": 3
}
}
}
}
"responses":[{
"name": "John Doe",
"answers":{
"AgeGroup": 2
}
}]
}]
在我的代码中,我有一个负责加载调查定义等的SurveyController和一个负责与实际调查响应相关的任务的ResponseController。我很难弄清楚的是,将回应答案与调查中定义的得分权重相结合以生成分数的适当"角度方式"。因为有两个控制器需要共享数据,我怀疑我可能需要像ScoringService这样的东西来完成所有的计数,但我不知道它是如何工作的。如果您能给我提供任何帮助或指导,我将不胜感激。
多谢!
你在正确的道路上!使用"ScoringService"将是实现它的正确方法。
服务只是可以在不同的控制器之间共享的对象。创建服务的方法是在你的应用模块中使用"service"方法:
var app = angular.module('myApp', [])
app.service('serviceName', function(){
this.tally = function(scores){
// Do some tallying and return result
}
});
你可以从你的控制器通过注入到函数中来调用这个服务:
app.controller('myCtrl', function(serviceName){
// now you can invoke the tally function within your controller by doing:
serviceName.tally(scores)
});