gpt4 book ai didi

javascript - 何时在 AngularJS Web 应用程序中使用 $scope?

转载 作者:行者123 更新时间:2023-12-03 07:05:33 24 4
gpt4 key购买 nike

我最近开始使用 AngularJS 并掌握了它的基础知识,但在我见过的示例中,我发现其中有两种不同的方法。

将变量和函数设为私有(private):

function myController(){
var controller = this;
controller.myVar = 0;
controller.myFunction = function(){...};
}

并通过 $scope 将它们公开:

function myController(){
$scope.myVar = myVar;
$scope.myFunction = function(){...}
}

我可以理解将某些东西设为私有(private)的必要性,但是将变量和函数公开为公共(public)对我来说并不合适,因为在这些情况下感觉单一责任原则被打破了。

有充分的理由公开这样的事情吗?除了公开某些内容之外,还有其他选择吗?还是我担心太多了?

最佳答案

$scope 是 Angular 中较旧的处理方式。新方法是使用 controllerAs 语法——即将 this 的值绑定(bind)到变量。

它们都可以工作,但是引入更新的 controllerAs 做事方式有多种原因 - 其中最主要的是因为它更接近他们期望的 Angular 2 方式。此外, Controller 作为做事的方式,允许人们在 View 中嵌套代码范围,并更好地理解插值的来源。例如:

<div ng-controller="controller1">
{{someVal}}
<div ng-controller="controller2">{{anotherVal}}</div>
</div>

由于 Angular 中的范围是继承的,因此很难判断 anotherVal 的值是来自 controller1 还是 controller2。当使用 controllerAs 语法时,它可以通过执行以下操作来澄清这一点:

<div ng-controller="controller1 as ctrl1">
{{ctrl1.someVal}}
<div ng-controller="controller2 as ctrl2">
{{ctrl2.anotherVal}}
</div>
</div>

现在,这些值的来源就变得显而易见了。

但是,要直接回答您的问题,当您希望访问某些 Angular 生命周期 Hook (例如 $)时,您可能仍然需要使用 $scope 对象scope.$watch$scope.apply

我相信像这样公开的主要原因是为了测试的目的,并让 Angular“知道”某些数据更改,以便它可以让任何“监听” View 使用react和更新对于这样的变化。

关于javascript - 何时在 AngularJS Web 应用程序中使用 $scope?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com