在AngularJS中,使用“Controller as”语法并且没有$ scope注入,$ scope的位置在哪里?

时间:2015-11-23 07:14:21

标签: angularjs

Controller as语法让我感到困惑。我理解从控制器向视图传递数据的两种方式,一次是通过Controller as语法,另一种是通过注入$ scope并在其上声明所有内容。

但是当我写代码时:

     <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>

$scopevm之间有什么关系?一个包含在另一个?

1 个答案:

答案 0 :(得分:0)

所以你有一个绑定到HTML视图的控制器对象。还有$scope实例,它是$ rootScope的后代。 $scope和控制器是不同的东西,但它们都在那里。

这是一个有点令人困惑的事情,即使你使用的是控制器,但无论如何都会在场景后面涉及$scope。实际上,vm仅在视图中可用,因为有引用$scope.vm = controllerInstance。但是使用controllerAs语法,您可以处理所有视图变量的前缀,如果您有嵌套的范围,这会有很多帮助。