作用
- 在
angular
1.2版本之后,对于数据绑定提供了另外一种方式,就是将数据绑定在this
上,然后在模板中对于controller
进行重命名,如<div ng-controller="myCtrl as vm">...</div>
- 如果在组件中像上述方式使用的话,我们就会使用到了
controllerAs
例子
实例一
代码
在非组件中使用,在模板中进行重命名
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<div ng-app="myApp" ng-controller="myCtrl as vm">
<h1>{{indexName}}</h1>
<h2>{{vm.childName}}</h2>
</div>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function ($scope) {
$scope.indexName = "主页";
this.childName = "父作用域";
});
</script>
</body>
</html>
效果
实例二
在组件中使用
this
进行绑定
代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<h1>{{indexName}}</h1>
<h2>{{childName}}</h2>
<!-- 自定义组件 -->
<hello-world></hello-world>
</div>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function ($scope) {
$scope.indexName = "主页";
$scope.childName = "父作用域";
});
app.directive("helloWorld",function(){
return {
restrict:'E',
template:`
<div>
<div>通过$scope绑定的数据: {{childName}}</div>
<div>通过this绑定的数据: {{vm.dogName}}</div>
</div>
`,
controller:function($scope){
$scope.childName = "自定义组件",
this.dogName = "旺财"
},
controllerAs:"vm"
}
})
</script>
</body>
</html>