Я использую радиокнопки, чтобы дать ответы на вопрос, и их нужно отображать в произвольном порядке, чтобы правильный ответ не всегда находился в одном и том же месте.Отображение элементов ng-repeat в случайном порядке
При использовании orderBy, чтобы поместить их в случайном порядке, они будут меняться при каждом нажатии одной из переключателей, как я могу предотвратить их переупорядочение, или есть лучший способ отображения переключателей случайно?
HTML
<div ng-controller="MyCtrl">
<div ng-repeat='n in list | orderBy:random'>
<label>
<input type='radio' ng-model='abc.ans' value='{{n}}'>
{{n}}
</label>
</div>
<p>
{{abc.ans}}
</p>
</div>
JS
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.abc = {};
$scope.list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
$scope.random = function() {
return 0.5 - Math.random();
}
}
JSFiddle демонстрирует проблему здесь: http://jsfiddle.net/o041kp7p/
Проблема заключается в том, что функция OrderBy должен возвращать тот же результат все время. ваш случайный будет просто rand до бесконечности. Вы должны добавить '_my_order' в каждый элемент списка. Если вы установите «1» в первом n._my_order, «0» во втором, второй будет отображаться первым. –
Хорошо, это имеет смысл, спасибо. – VadislavBby
- это решения или нужно что-то еще? –