サーバーからデータを取得しているとしましょう。
data = {
"value": "123456",
"included": true,
"invalid": true,
"warning": false,
"error": false,
}
ブール値の状態に応じて、値を特定のスタイルで表示する必要があります。私が現在行っているのは、データをJSコンストラクターにフォーマットすることです
$scope.model = new SomePrototype(data);
CSS を推測するには、ルールを計算します (疑似コードで):
var SomePrototype = function (data) {
this.computeCSS = function () {
if data.error then css = 'danger'
if (data.included and data.invalid) then css = 'danger'
/*other rules*/
return css
}
}
次に、HTML ビューで computeCSS() を呼び出します
<p class="{{model.computeCSS()}}">{{model.value}}</p>
次のようにレンダリングされます
`<p class="danger">123456</p>`
問題: まず、このようなものは他では見たことがありません。だから私は何か間違ったことをするかもしれません。通常、クラス値を保持するために $scope の下にオブジェクトを取得します。次に、各コントローラーで SomePrototype を呼び出す必要があります。
サービス/ファクトリを使用する方が合法かどうか疑問に思います。最終結果は基本的に同じように見えます。