Каковы преимущества / недостатки декларативного шаблона? Подход ViewModel?

Когда мы говорим о декларативном синтаксисе в 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 в контроллере иногда? Все время? Никогда? И каковы преимущества / недостатки размещения логики представления в контроллере / шаблоне?

0 ответов

Другие вопросы по тегам