栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Angularjs“ Controller as”或“ $ scope”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Angularjs“ Controller as”或“ $ scope”

过去,我已经为这个问题写了一些答案,它们基本上都归结为同一件事。在Angular中

$scope
,即使没有明确引用它,也正在使用。

ControllerAs语法允许Angular帮助您编写更高效,更容错的控制器。在幕后,当您使用

ng-controller="theControlleras ctrl"
Angular
theController
$scope
,将在上创建为属性,并将其分配为
ctrl
。现在,您有了要从作用域引用的对象属性,并且可以自动免受原型继承问题的影响。

从性能的角度来看,由于您仍在使用

$scope
,因此几乎没有性能差异。但是,由于您的控制器现在不再
$scope
自己直接分配变量,因此不需要
$scope
注入。而且,由于现在它只是一个普通的Javascript函数,因此可以更容易地对控制器进行隔离测试。

从前瞻性角度来看,现在众所周知Angular 2.0尚不具备

$scope
,但将使用ECMAscript
6的功能。在Angular团队发布的任何显示迁移的预览中,它们首先都是通过重构控制器来消除的
$scope
。如果您的代码是在不使用
$scope
基础控制器的情况下设计的,那么迁移的第一步已经完成。

从设计者的角度来看,ControllerAs语法使在对象的操作位置更加清晰。拥有

customerCtrl.Address
storeCtrl.Address
使您更容易识别出您有一个由多个不同的控制器为不同目的分配的地址,这要比两者都使用时要容易
$scope.Address
。在页面上具有两个不同的HTML元素,这两个HTML元素都已绑定
{{Address}}
并知道哪个元素仅由控制器包含在其中,这是解决问题的主要麻烦。

最终,除非您尝试启动一个10分钟的演示,否则您真的应该使用ControllerA进行任何严肃的Angular工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号