我試圖在我的頁面上使用兩個圖像文件創建鋼琴:白鍵和黑鍵。我已經創建了它們,但鋼琴上的黑鍵以2和3的組相互替換,我會隱藏索引的黑色關鍵圖像[1,4(1 + 3),8(4 + 4) ),11(8 + 3),15(11 + 4),...,54]。我不確定如何去做這件事。使用ng-repeat創建它們後隱藏特定元素
這就是我創建它們的方式。
HTML:
<div ng-controller="DrawCtrl as draw">
<ul class="white-keys">
<li ng-repeat="t in draw.range(56) track by $index">
<img ng-src={{draw.white_key}} />
</li>
</ul>
<ul class="black-keys">
<li ng-repeat="t in draw.range(55) track by $index">
<img ng-src={{draw.black_key}} />
</li>
</ul>
</div>
JS:
angular.module('app')
.controller('DrawCtrl', function() {
var self = this;
self.piano_back = 'img/background.png';
self.white_key = 'img/midi_white_up.png';
self.black_key = 'img/midi_black_up.png';
self.range = function(num) {
return new Array(num);
};
});
編輯:得到它的工作多虧hansmaad的答案。
HTML:
<ul class="black-keys">
<li ng-repeat="key in draw.keys" ng-switch="key.black">
<img ng-switch-when="true" ng-src={{draw.black_key}} />
<img ng-switch-when="false" ng-src={{draw.black_key}} class="black-hidden" />
</li>
</ul>
JS:
self.keys = [];
var keyGroupOf3 = true;
self.keys.push({black: true}); // first key is shown
var i = 1;
while (i < 54) {
self.keys.push({black: false});
// alwasy followed by at least two
self.keys.push({black: true});
self.keys.push({black: true});
if (keyGroupOf3){
self.keys.push({black: true});
i += 4;
} else {
i += 3;
}
我有點困惑,這將如何創建正確數量的鍵。有56個白鍵,但只有36個黑鍵。 – user1742646
@ user1742646我添加了控制器實現來填充關鍵數組。 – hansmaad
謝謝!我得到它的工作,並將更新我的帖子與我的代碼。 – user1742646