angularjs 中的 $ctrl 是什么?何时在视图中使用 $ctrl 和 $scope?

abh*_*nde 3 angularjs

在示例$ctrl中用于视图

<b>Heroes</b><br>
<hero-detail ng-repeat="hero in $ctrl.list" 
             hero="hero" 
             on-delete="$ctrl.deleteHero(hero)" 
             on-update="$ctrl.updateHero(hero, prop, value)">
</hero-detail>
Run Code Online (Sandbox Code Playgroud)

何时使用$ctrl以及何时$scope用于与视图交互?

https://docs.angularjs.org/guide/component

han*_*man 5

在视图中,您可以将别名绑定到您的控制器,以便于引用$scope变量。

当您嵌套控制器并且不想引用来自不同控制器的某些内容时,这很有用。因为$scope遵循分层数据结构。

因此,为了确定控制器的范围,您可以使用此语法。

例如,有两个控制器,都具有相同的变量“名称”,您可以这样做:

<body ng-controller="ParentCtrl as ptr">
    <input ng-model="name" /> {{ptr.name}}

    <div ng-controller="ChildCtrl as chl">
        <input ng-model="name" /> {{chl.name}} - {{ptr.name}}
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

这使得引用范围变量变得容易。

<b>Heroes</b><br>
<hero-detail ng-repeat="hero in $ctrl.list" 
             hero="hero" 
             on-delete="$ctrl.deleteHero(hero)" 
             on-update="$ctrl.updateHero(hero, prop, value)">
</hero-detail>
Run Code Online (Sandbox Code Playgroud)

Angulajs 1.5 之后,如果您使用的是components,默认别名是$ctrl,当然您可以覆盖它。