我正在使用Angular制作表格,遇到了一个奇怪的问题。该表格就像一个评分表,我想向用户显示平均评分,它是5个问题,基于1-5分。容易吧?
将它们加在一起并除以5?
数学有效,但是如果您选择单选框倒退..则意味着开始选择第5个问题,然后转到第1个问题,在选择最后一个单选框之前先停止,数学是很麻烦的。例如,为5个问题中的4个选择“选项3”,平均得出666.6?但这应该平均为2.4。如果以正确的顺序从问题1到问题5选择元素,那么即使停止选择选项,数学运算也会成功。
我创建了一个小提琴,以便您可以看到。
http://jsfiddle.net/YGQT9/737/
HTML;
<div ng-app="myApp">
<form name="saveTemplateData" action="#" ng-controller="FormCtrl">
<input type='radio' ng-value="1" name="cat1" ng-model="data.cat1">1
<input type='radio' ng-value="2" name="cat1" ng-model="data.cat1">2
<input type='radio' ng-value="3" name="cat1" ng-model="data.cat1">3
<input type='radio' ng-value="4" name="cat1" ng-model="data.cat1">4
<input type='radio' ng-value="5" name="cat1" ng-model="data.cat1">5
---- Selected: {{ data.cat1 }} # DO NOT SELECT
<br />
<input type='radio' ng-value="1" name="cat2" ng-model="data.cat2">1
<input type='radio' ng-value="2" name="cat2" ng-model="data.cat2">2
<input type='radio' ng-value="3" name="cat2" ng-model="data.cat2">3
<input type='radio' ng-value="4" name="cat2" ng-model="data.cat2">4
<input type='radio' ng-value="5" name="cat2" ng-model="data.cat2">5
---- Selected: {{ data.cat2 }} # STOP HERE
<br />
<input type='radio' ng-value="1" name="cat3" ng-model="data.cat3">1
<input type='radio' ng-value="2" name="cat3" ng-model="data.cat3">2
<input type='radio' ng-value="3" name="cat3" ng-model="data.cat3">3
<input type='radio' ng-value="4" name="cat3" ng-model="data.cat3">4
<input type='radio' ng-value="5" name="cat3" ng-model="data.cat3">5
---- Selected: {{ data.cat3 }} # NEXT HERE
<br />
<input type='radio' ng-value="1" name="cat4" ng-model="data.cat4">1
<input type='radio' ng-value="2" name="cat4" ng-model="data.cat4">2
<input type='radio' ng-value="3" name="cat4" ng-model="data.cat4">3
<input type='radio' ng-value="4" name="cat4" ng-model="data.cat4">4
<input type='radio' ng-value="5" name="cat4" ng-model="data.cat4">5
---- Selected: {{ data.cat4 }} # NEXT HERE
<br />
<input type='radio' ng-value="1" name="cat5" ng-model="data.cat5">1
<input type='radio' ng-value="2" name="cat5" ng-model="data.cat5">2
<input type='radio' ng-value="3" name="cat5" ng-model="data.cat5">3
<input type='radio' ng-value="4" name="cat5" ng-model="data.cat5">4
<input type='radio' ng-value="5" name="cat5" ng-model="data.cat5">5
---- Selected: {{ data.cat5 }} # START HERE
<br />
Avg Selected: {{ (data.cat1 + data.cat2 + data.cat3 + data.cat4 + data.cat5) / 5|number }}
</form>
</div>
角度
var app = angular.module('myApp', []);
app.controller('FormCtrl', function ($scope, $http) {
$scope.data = {
cat1: "",
cat2: "",
cat3: "",
cat4: "",
cat5: "",
};
});
任何人都知道Angular引擎盖下面发生了什么事吗?对我来说,这并不是什么大问题,但我很好奇。
最佳答案
因为您需要像这样为$ scope.data设置初始值
$scope.data = {
cat1: 0,
cat2: 0,
cat3: 0,
cat4: 0,
cat5: 0,
};
您需要将对象中的每个项目都设置为
int
,但是将其设置为string
。那是原因:)希望能有所帮助关于javascript - 这个AngularJS代码是怎么回事?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48198803/