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>
$scope
和vm
之间有什么关系?一个包含在另一个?
答案 0 :(得分:0)
所以你有一个绑定到HTML视图的控制器对象。还有$scope
实例,它是$ rootScope的后代。 $scope
和控制器是不同的东西,但它们都在那里。
这是一个有点令人困惑的事情,即使你使用的是控制器,但无论如何都会在场景后面涉及$scope
。实际上,vm
仅在视图中可用,因为有引用$scope.vm = controllerInstance
。但是使用controllerAs语法,您可以处理所有视图变量的前缀,如果您有嵌套的范围,这会有很多帮助。