Javascript 声明性模板的优点/缺点是什么?视图模型方法?

Javascript 声明性模板的优点/缺点是什么?视图模型方法?,javascript,angularjs,angularjs-scope,mvw,Javascript,Angularjs,Angularjs Scope,Mvw,在讨论angularjs中的声明性语法时,我们通常会提出指令,以及如何将$scope属性向下传递到这些指令中,以进行处理、DOM操作、数据收集以及可能的各种组合 然而,目前我正在努力说服我的团队(更不用说我自己了),声明性模板是正确的方法。这并不一定意味着使用指令,而是如何使用指令 下面的控制器/模板对显示了一个示例,其中我根据“model”/$scope的属性显示了一个元素 function MainController($scope) { $scope.hasJQuery = tru

在讨论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>
功能主控制器($scope){
$scope.hasJQuery=true;
$scope.hasProblems=true;
$scope.hasloash=false;
$scope.hastuff=true;
}
TL;博士
但另一种方法可能是这样的

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>
功能主控制器2($scope){
//获取/检索$scope文件。。。
//设置“视图模型”数据
$scope.hasJQueryAndProblemsAndLodashAndStuff=$scope.hasJQuery&&$scope.hasProblems&&$scope.hasloash&&$scope.hastuff;
$scope.hasJQueryAndLodash=$scope.hasJQuery&&$scope.hasloash;
}
...
这个名称可能是一个夸张的版本,例如
isReady
hasAll
,但重点是要表明,有时html需要多个
ng类
属性,其中各种逻辑依赖于
$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>
我主要看到第一个例子是人们通常使用的——除了逻辑变得非常复杂的情况。另外,我也知道angularjs是一个MVW,但这真的帮不了我


有时我应该只在控制器中的
$scope
中添加“ViewModel”(表示逻辑)吗?总是从未?将表示逻辑放入控制器/模板的优点/缺点是什么

第二种情况是,有一个更改-检查器的名称应该是非常通用的(即,
isReady()
),或者非常具体地说明所需的条件,但没有将来可能更改的任何细节。不过,这个问题主要是关于意见。这个网站不是。@raina77ow更喜欢一个而不是另一个是一种观点,但是帮助你做出这个决定的原因是我在寻找的。我会在模板中尽可能地加入一些逻辑/角度表达式,因为这样比较难理解test@JonSamwell测试怎么会更难?如果我用模拟数据设置
$scope
,唯一需要测试的是元素是否出现,我甚至认为我不应该这样做,因为它是一个角度指令。。。只是有点困惑,为什么有人会选择用“表示逻辑”将他们的
$scope
更多内容弄乱,这在后面的问题中又增加了更多内容