AngularJS アプリがあります。私はAngular で物事を行う正しい方法を学び、フレームワークをよりよく理解しようとしています。それを念頭に置いて、次のようなアプリがあります。
index.html
<!DOCTYPE html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="myControllers.js"></script>
<style type="text/css">
.init { border: solid 1px black; background-color: white; color: black; }
.red { background-color:red; color:white; border:none; }
.white { background-color: white; color: black; border:none; }
.blue { background-color:blue; color:white; border:none; }
</style>
</head>
<body ng-controller="StripeListCtrl">
<select ng-options="stripe.id as stripe.name for stripe in stripes" ng-model="selectedStripe">
<option value="">Select a Stripe Color</option>
</select>
<div ng-class="{{getStripeCss()}}">
You chose {{selectedStripe.name}}
</div>
</body>
</html>
mycontrollers.js
function StripeListCtrl($scope) {
$scope.selectedStripe = null;
$scope.stripes = [
{ name: "Red", id=2, css: 'red' },
{ name: "White", id: 1, css: 'white' },
{ name: "Blue", id: 5, css: 'blue' }
];
$scope.getStripeCss = function() {
if ($scope.selectedStripe == null) {
return "init";
}
return $scope.selectedStripe.css;
}
}
ユーザーがドロップダウンでオプションを選択したときに、DIV 要素のスタイルを動的に変更する方法を見つけようとしています。このとき、getStripeCss 関数が起動します。ただし、selectedStripe はストライプの ID です。XAML のバックグラウンドを持つ私は、オブジェクト全体を持つことに慣れています。ストライプ オブジェクトをループ処理して、対応する ID を持つオブジェクトを見つけるユーティリティ メソッドを作成できることは理解していますが、この種のタスクではかなり手作業のようです。
私が述べたようにユーティリティメソッドを書くよりもエレガントなアプローチはありますか? もしそうなら、どのように?
ありがとうございました!