Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Angular JS中,控制器创建的作用域对象方法是什么?_Javascript_Angularjs - Fatal编程技术网

Javascript 在Angular JS中,控制器创建的作用域对象方法是什么?

Javascript 在Angular JS中,控制器创建的作用域对象方法是什么?,javascript,angularjs,Javascript,Angularjs,“controller as”语法是什么?它与创建控制器的$scope对象方法有何不同 我已经经历过了 我想您想知道“this”和“$scope”方法之间的区别。我建议您浏览以下主题: 此外,AngularJS在探索这些和其他概念时也有一个(尽管有自己的见解)。最后,我找到了我想要的确切答案 在AngularJS 1.2中,引入了“控制器为”语法,使控制器代码创建更具可读性 通常,我们使用$scope对象创建控制器,如下清单所示: myApp.controller("AddController

“controller as”语法是什么?它与创建控制器的$scope对象方法有何不同

我已经经历过了


我想您想知道“this”和“$scope”方法之间的区别。我建议您浏览以下主题:


此外,AngularJS在探索这些和其他概念时也有一个(尽管有自己的见解)。

最后,我找到了我想要的确切答案

在AngularJS 1.2中,引入了“控制器为”语法,使控制器代码创建更具可读性

通常,我们使用$scope对象创建控制器,如下清单所示:

myApp.controller("AddController", function ($scope) {
    $scope.numb1;
    $scope.numb2;
    $scope.result;
    $scope.add = function () {
        $scope.result = $scope.numb1 + $scope.numb2;
    }
});
<div ng-controller="AddVMController as vm">

            <input ng-model="vm.number1" type="number" />

            <input ng-model="vm.number2" type="number" />

            <button class="btn btn-default" ng-click="vm.add()">Add</button>

            <h3>{{vm.result}}</h3>

  </div>
在上面,我们使用$scope对象控制器和视图创建了一个AddController,其中包含三个变量和一个行为,它们相互通信。$scope对象用于向视图传递数据和行为。它将视图和控制器粘在一起

基本上,$scope对象执行以下任务:

  • 将数据从控制器传递到视图

  • 将行为从控制器传递到视图

  • 将控制器和视图粘在一起

  • 当视图更改时,$scope对象将被修改,而当$scope对象的属性更改时,视图将被修改

    我们可以使用controller作为语法和vm变量重写上述控制器,如下清单所示:

    myApp.controller("AddVMController", function () {
        var vm = this;
        vm.number1 = undefined;
        vm.number2=undefined;
        vm.result =undefined;
    vm.add = function () {
         vm.result = vm.number1 + vm.number2;
     }
    
    }))

  • 本质上,我们是将其分配给变量vm,然后将属性和行为附加到该变量。在视图中,我们可以使用controller作为语法访问AddVmController。如下表所示:

    myApp.controller("AddController", function ($scope) {
        $scope.numb1;
        $scope.numb2;
        $scope.result;
        $scope.add = function () {
            $scope.result = $scope.numb1 + $scope.numb2;
        }
    });
    
    <div ng-controller="AddVMController as vm">
    
                <input ng-model="vm.number1" type="number" />
    
                <input ng-model="vm.number2" type="number" />
    
                <button class="btn btn-default" ng-click="vm.add()">Add</button>
    
                <h3>{{vm.result}}</h3>
    
      </div>
    
    
    添加
    {{vm.result}
    
    以下是将控制器用作语法的一些步骤:

  • 创建不带$scope对象的控制器

  • 将其分配给局部变量。我更喜欢变量名作为vm,您可以选择任何您选择的名称

  • 将数据和行为附加到vm变量

  • 在视图中,使用控制器作为语法为控制器提供别名

  • 您可以为别名指定任何名称。我更喜欢使用vm,除非我不使用嵌套控制器

  • 在controller as语法中,我们有更多可读的代码,并且可以使用父控制器的别名而不是$parent语法来访问父属性


    最后,我想说,无论是将控制器用作语法还是$scope对象,完全由您自己选择。这两种方法都没有很大的优点或缺点,只是考虑到视图中嵌套的控制器之间的明显分离,您可以控制上下文中的控制器作为语法使用起来更容易一些

    不清楚你在问什么。也读一下这个@Chrillewoodz:现在更清楚了吗?请复习问题和答案。请看另一个答案。我问的是“controller as”语法,以及它与$scope对象方法的区别。