1

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コントローラに追加する必要がある場合がありますか? いつも?一度もない?また、プレゼンテーションロジックをコントローラー/テンプレートに入れることの利点/欠点は何ですか?

4

0 に答える 0