博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AngularJS 'Controller As'用法
阅读量:6701 次
发布时间:2019-06-25

本文共 1691 字,大约阅读时间需要 5 分钟。

AngularJS 1.2版本中提供了Controller As语法,简单说就是可以在Controller中使用this来替代$scope,使得Controller更像一个传统的JS类,相对于$scope的继承树要理解上要简单一些。

基础用法

传统的Controller是这样写的:

app.controller('MainCtrl', function($scope) {    $scope.title = 'Some title';});

这种写法下,$scope是注入到MainCtrl中的服务,是Dom元素和Controller之间的粘合剂。

{ { title } }

这个孤单的title常常让初学者疑惑。

在AngularJS 1.2版本之后,我们可以这样写:

app.controller('MainCtrl', function() {    this.title = 'Some title';});

这种写法下,MainCtrl更像是一个JS类:

var MainCtrl = function() {    this.title = 'Some title';};var main = new MainCtrl();

在页面上使用时就可以使用Controller As语法,实例化对象

{ { main.title } }

嵌套块

这种理解上的好处在嵌套块中更加明显:

{ { title } }
{ { title } }
{ { title } }

这个title可能是$scope继承树上的任意一个。而使用Controller as之后:

{ { main.title } }
Scope title: { { another.title } } Parent title: { { main.title } }
Scope title: { { yet.title } } Parent title: { { another.title } } Parent parent title: { { main.title } }

这就清晰很多。

Directive用法

在Directive中,我们可以这样使用:

app.directive('myDirective', function() {    return {        restrict: 'EA',        template: '
{ { my.title } }
', controller: function() { this.title = 'Some title'; }, controllerAs: 'my' };});

$watch

只是$watch还是需要注入$scope:

app.controller('MainCtrl', function($scope) {    this.title = 'Some title';    $scope.$watch(angular.bind(this, function() {        return this.title;    }), function(newVal, oldVal) {});});

本文地址:

转载于:https://www.cnblogs.com/CloudMu/p/3772767.html

你可能感兴趣的文章
安卓App设计博文
查看>>
11.8 开课二个月零四天 (Jquery)
查看>>
ZEN CART 在LINUX系统下设置邮箱方法---用GMAIL设置,方法选择SMTPAUTH
查看>>
ofstream的使用方法--超级精细。C++文件写入、读出函数(转)
查看>>
DOM剪切板
查看>>
10.高效分布
查看>>
装饰器概念及运用
查看>>
CCF 201312-4 有趣的数
查看>>
screenX clientX pageX的区别
查看>>
android之自定义广播
查看>>
cAdvisor+InfluxDB+Grafana 监控Docker
查看>>
在 PowerPoint 2016 中嵌入网页
查看>>
C#关键字的使用
查看>>
操作系统常考知识点总结(1)
查看>>
Find Minimum in Rotated Sorted Array II
查看>>
spring 第一天:1015
查看>>
JavaScript 几种简单的table切换
查看>>
DevExpress控件使用经验总结
查看>>
软件包管理 之 fedora-rpmdevtools 工具介绍
查看>>
远程连接mysql数据库,1130问题
查看>>