我正在开发一个测验应用。我一直试图弄清楚如何在测验问题中改变选项。
我已经研究过了,我发现最接近的是: shuffle array in ng-repeat angular
但是,我没有成功实现shuffleArray()函数。这对我不起作用。
我创建了一个jsfiddle http://jsfiddle.net/fa4v8/121/
这是我的重复:
<div ng-controller="MyCtrl">
<p ng-repeat="(key,i) in options">{{options[key].text}}</p>
</div>
这是我的控制者:
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.options = {
"d": {
"text": "Answer1-d"
},
"c": {
"text": "Answer1-c"
},
"a": {
"text": "Answer1-a"
},
"b": {
"text": "Answer1-b"
}
}
}
输出按此顺序排列:(a,b,c,d)
答案-A
答案-b
答案-c
答案-d
有没有办法让订单中的选项显示为$ scope.options(d,c,a,b)或以随机顺序显示?
答案 0 :(得分:0)
可以帮助您的工作示例:http://jsfiddle.net/owenmead/fa4v8/1/ 取自https://stackoverflow.com/a/21587316/3335993,只需在控制器中对它们进行排序,并在每次迭代中分配一个随机排名。
function MyCtrl($scope) {
$scope.list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
$scope.random = function() {
return 0.5 - Math.random();
}
}
答案 1 :(得分:0)
实际上ng-repeat
将按照定义的顺序返回对象的键 - 只要您使用Angular 1.4及更高版本。高达1.3版本的ngRepeat指令用于按字母顺序对键进行排序。
您提供的jsfiddle使用版本1.0 ...
查看此插件http://plnkr.co/edit/bStyZU 这个解释https://docs.angularjs.org/api/ng/directive/ngRepeat