Я играю с карточным приложением, и я хочу, чтобы изображение карты отображалось для каждого экземпляра, который находится в массиве. Чтобы это было просто, я хочу показать card1.png, если массив выглядит как [1,2,3,4,5]. Тем не менее, я хочу, чтобы изображение отображалось дважды, если массив выглядит как [1,1,3,4,5]. До сих пор я могу просто показать его однажды.Как показать один и тот же элемент более одного раза в ng-show?
index.html
<div ng-repeat="hand in hands track by $index">
Player {{$index}} hand: {{ hand }}
<img src="/images/faces-one.png" ng-show="numberInArray(hand, 1)">
<img src="/images/two.png" ng-show="numberInArray(hand, 2)">
<img src="/images/three.png" ng-show="numberInArray(hand, 3)">
<img src="/images/four.png" ng-show="numberInArray(hand, 4)">
<img src="/images/five.png" ng-show="numberInArray(hand, 5)">
<img src="/images/six.png" ng-show="numberInArray(hand, 6)">
</div>
App.js
$scope.numberInArray = function(hand, num) {
var found;
found = hand.includes(num) ? true : false;
return found;
}
Вы не должны делать такой расчет в файле вида вообще. Даже если вы можете исправить логику, это очень неэффективно, потому что эта функция будет вызываться *** шесть раз! *** ** каждый раз, когда обнаружено изменение **. Вместо этого вы должны создать массив изображений, которые хотите использовать в своем контроллере, и использовать 'ng-src' или что-то подобное. – Claies
Другими словами, там должны быть две петли здесь, одна для «руки в руках» и одна для «карты в руке». – Claies
Несмотря на мой ответ ниже, я согласен с @Claies. Мы всегда должны делать как можно больше в контроллере. –