angularjs の宣言構文について話すときは、通常、$scope
ディレクティブと、処理、DOM 操作、データ収集、およびおそらくそれらのさまざまな組み合わせのために、これらのディレクティブにプロパティを渡す方法を取り上げます。
現在、宣言型テンプレートが正しいアプローチであることをチーム (自分自身は言うまでもなく) に納得させるのに苦労しています。それは必ずしもディレクティブを使用することを意味するわけではありませんが、ディレクティブを使用する方法です。
次のコントローラーとテンプレートのペアは、"model"/$scope のプロパティに基づいて要素を表示する例を示しています。
function MainController($scope) {
$scope.hasJQuery = true;
$scope.hasProblems = true;
$scope.hasLodash = false;
$scope.hasStuff = true;
}
<div ng-controller="MainController">
<span ng-if="hasJquery && hasProblems && hasLodash && hasStuff">TL;DR?</span>
<div>
しかし、他のアプローチはこのように見えるかもしれません
function MainController2($scope) {
// Get/Retrieve $scope stuff...
// Setup "ViewModel" Data
$scope.hasJQueryAndProblemsAndLodashAndStuff = $scope.hasJQuery && $scope.hasProblems && $scope.hasLodash && $scope.hasStuff;
$scope.hasJQueryAndLodash = $scope.hasJQuery && $scope.hasLodash;
}
<div ng-controller="MainController">
<span ng-if="hasJQueryAndProblemsAndLodashAndStuff">...</span>
<span ng-class="hasJqueryAndLodash ? 'blue' : ''"></span>
</div>
isReady
この名前は、またはなどの可能性のあるものの誇張されたバージョンですが、ポイントは、さまざまなロジックがプロパティに依存するhasAll
場合、html が複数の属性を必要とする場合があることを示すことでした。ng-class
$scope
最初の例は、ロジックが非常に複雑になる場合を除いて、人々が通常使用するものです。さらに、angularjsがMVWであることも知っていますが、それは本当に役に立ちません。
「ViewModel」(プレゼンテーション ロジック) だけを$scope
コントローラに追加する必要がある場合がありますか? いつも?一度もない?また、プレゼンテーションロジックをコントローラー/テンプレートに入れることの利点/欠点は何ですか?