我有很多关于单选按钮作为选项的问题。每个问题都有一个部分,每当我从一个部分移动到另一个部分时,我会失去按钮的值,除了最近的一个。我该如何解决这个问题?
部分:
<link rel="stylesheet" href="css/common.css" />
<section class="myinfo">
<center>
<a href="#details/{{prevItem}}" class="button">PREV</a>
<a href="#details/{{nextItem}}" class="button">NEXT</a>
</center>
<p class="sel">
{{questions[currItem].q}}
</p>
<ul>
<li class="optlist" ng-repeat="item in questions[currItem].opt">
<label class="formgroup">
<input type="radio" name="q" ng-click="store(item.pos, currItem)" value="{{item.pos}}" />
<span>{{item.val}}</span>
</label>
</li>
</ul>
<p class="ques">You've chosen: {{selopt}}</p>
<center>
<a ng-click="show()">Check</a>
</center>
</section>
控制器:
myApp.controller('OneController', ['$scope', '$http','$routeParams' ,function($scope, $http, $routeParams) {
$http.get('js/JOSCO.json').success(function(data) {
$scope.questions = data;
$scope.currItem= $routeParams.itemId;
$scope.parseInt = parseInt;
if ($routeParams.itemId > 0) {
$scope.prevItem = Number($routeParams.itemId) - 1;
}
else {
$scope.prevItem = $scope.questions.length - 1;
}
if ($routeParams.itemId < $scope.questions.length-1) {
$scope.nextItem = Number($routeParams.itemId) + 1;
}
else {
$scope.nextItem = 0;
}
});
$scope.ansArr = [];
$scope.store = function(pos, index) {
$scope.ansArr[index] = pos;
alert($scope.ansArr[index]);
};
$scope.show = function() {
$scope.s = "";
for (var i = 0; i < 12; i++) {
$scope.s = $scope.s + " " + $scope.ansArr[i];
}
alert($scope.s); // returns undefined for everything except the last one
};
}]);
答案 0 :(得分:0)
要为无线电输入设置值,您需要添加 ng-model :
<input type="radio" data-ng-model="item.pos"/>
每次更改当前路径(在同一层次结构中),然后销毁前一个控制器并创建下一个控制器,因此不保存之间的值。您可以使用服务,但您也可以将值存储在 $ rootScope 中,而不是 $ scope ,因为它对所有应用都是通用的,因此您可以在转换之间获得共享数据。只需注入 $ rootScope 到控制器并使用它: $ rootScope.anyValue = val;