5つ星評価システムを試してみました。これが私のコードの簡略版です: https://codepen.io/ystaum/pen/NWbLoPO
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<body ng-app="app">
<div ng-controller="Controller as ctrl">
<div ng-repeat="star in ctrl.range" ng-init="rated = star.id">
<button ng-repeat="num in [1,2,3,4,5]" ng-class="{'blue':num <= rated}" ng-click="rated = num">{{ num }}</button>
</div>
</body>
CSS:
.blue{
background:blue;
}
JS:
(function () {
angular
.module("app", [])
.controller("Controller", function ($http) {
var vm = this;
init();
function init() {
vm.rating = 3;
vm.range = [{id:4},{ id:5},{id:0},{id:3}];
};
});
})();
問題は、任意のボタンをクリックすると、そのボタンだけが「強調表示」されることです (前になかった場合)。ボタンに ng-class を設定する方法は、その行のすべてのボタンに影響するはずです (数字が小さいほど強調表示され、数字が大きいほど影響を受けません)。なぜこれはそうしないのですか?どうすればやりたいことができるようになりますか?
編集: var を使用した理由は、id 値の一貫性を維持し、評価システムに評価の選択を表示させるためでした。