Controller
的文档说:
通过将ng-controller ="指定为propertyName",可以将控制器实例发布到范围属性中。
控制器实例发布到的scope
是什么?该范围来自哪里?我在哪里可以了解更多关于这个"范围"?
修改
我的部分问题是,如果您不使用控制器作为,而是注入$ scope ...然后在$ scope上设置您的属性...它是如何从那里到达范围的& #39;在视图中?基本上控制器实例对吗?
答案 0 :(得分:2)
ng-controller
, controllerAs
都会创建子范围。子范围原型继承自其父级。
<div ng-app="app">
{{$id}} - the outer scope id is 1 (same as root here)
<div ng-controller="FooCtrl">
{{$id}} - the child scope id is 2
</div>
</div>
FooCtrl
实例将获取ng-controller
指令创建的子范围:
.controller("FooCtrl", function($scope){
console.log($scope.$id); // 2
});
controllerAs
对ng-controller
创建的范围实例没有任何作用。它只是简单地在ng-controller
属性
as alias
创建的子范围)上分配控制器实例。
<div ng-controller="FooCtrl as ctrl">
{{ctrl.p1.v}}
</div>
控制器功能分配给实例:
.controller("FooCtrl", function($scope){
this.p1 = {v: "p1"};
// the following is true
console.log($scope.ctrl === this);
// but don't do this, since the controller function shouldn't know about ctrl alias
});