何时在 AngularJS Web 应用程序中使用 $scope
When to use $scope in AngularJS Web application?
我最近开始使用AngularJS,并掌握了它的基础知识,但是在我看到的示例中,我发现了两种不同的方法。
将变量和函数设为私有:
function myController(){
var controller = this;
controller.myVar = 0;
controller.myFunction = function(){...};
}
并通过$scope公开它们:
function myController(){
$scope.myVar = myVar;
$scope.myFunction = function(){...}
}
我可以理解将某些东西设为私有的必要性,但是将变量和函数公开为公共对我来说并不重要,因为在这些情况下感觉单一责任原则被打破了。
有充分的理由公开这样的事情吗?除了公开某些内容之外,还有其他选择吗?还是我担心得太多了?
$scope
是Angular中较老的做事方式。新的方法是使用 controllerAs
语法 - 即将 this
的值绑定到变量时。
它们都有效,但引入更新的controllerAs
做事方式有很多原因 - 其中最主要的是因为它更接近他们所期望的Angular 2存在方式。此外,控制器作为做事的方式,允许人们在视图中嵌套代码范围,并更好地了解插值的来源。例如:
<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>
现在,这些值的来源变得很明显了。
但是,要直接回答您的问题,当您希望访问某些角度生命周期钩子(例如$scope.$watch
、$scope.apply
等)时,您可能仍然需要使用 $scope
对象。
我相信公开这样的事情的主要原因是为了测试,并让 Angular "知道"某些数据更改,以便它可以让任何"侦听"视图对此类更改做出反应和更新。
仅在执行数据绑定或要在控制器之间传递数据时使用$scope
,否则不必这样做。
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 何时在 AngularJS Web 应用程序中使用 $scope
- 配置和访问由第三方应用程序$scope的 AngularJS
- 在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的
- 是$scope$对于一个大型应用程序来说,广播速度足够快,或者我应该创建一个自定义消息总线
- Angular scope手表;在我的应用程序中不起作用
- 可以从$scope中访问angularjs$scope$应用程序调用
- Ionic应用程序不打印$scope
- Angular应用程序don't显示$scope值,而不是错误消息
- 我将$scope替换为一个变量,现在我的angular应用程序不能工作了
- 在AngularJS应用程序页面加载时执行SharePoint函数($scope issue??)