我们可以只this
在控制器中使用,而不可以$scope
吗?
在某些情况下,当然是的,我知道……但是……
如果我们需要$emit
,$broadcast
以及其他一些角度特征,我们只能在范围内找到?我们可以通过这种方式获得它,或者通过其他方式获得它吗?
我们可以只this
在控制器中使用,而不可以$scope
吗?
在某些情况下,当然是的,我知道……但是……
如果我们需要$emit
,$broadcast
以及其他一些角度特征,我们只能在范围内找到?我们可以通过这种方式获得它,或者通过其他方式获得它吗?
当您以这种格式创建控制器时:
angular.module('myModule').controller('myController',['$scope',function($scope){
//controller code here
}]);
您传递的函数基本上是控制器对象的构造函数
所以当你写这样的代码时:
angular.module('myModule').controller('myController',['$scope',function($scope){
this.myObject = { key : value};
}]);
您基本上是在制作对象myObject
的属性myController
控制器基本上在 angular.js 中用于增强视图(由指令处理)和服务(负责业务逻辑)之间的通信
要启用它,您可以使用依赖注入 Angular 提供并将$scope
对象插入到控制器中,如上所示
当您使用ng-controller="myController"
新的范围对象实例化控制器时,将创建与您的控制器对象一起使用的对象。作为参数传递给控制器构造函数的$scope
对象具有新创建的范围。
这是角度文档的摘录:
属性包含视图模型(视图将呈现的模型)。所有 $scope 属性都将在 DOM 中注册 Controller 的位置对模板可用。
所以基本上你附加到 $scope 对象的任何属性都可以在 DOM 中进行操作
您附加到的任何属性this
在 DOM 中都不可用。例如 :
this is you angular configuration :
angular.module('myModule').controller('myController',['$scope',function($scope){
$scope.name = 'kiran'
this.message = 'hello world';
}]);
This is your html :
<p>{{name}}</p>
输出将是:基兰。
如果您尝试过 :<p>{{message}}</p>
相反,它将引发错误。
只有作用域对象包含像 $$watchers 这样的属性,它是在当前作用域上监视的所有变量的列表,$watch API,用于事件处理的 $on API 等等。
所以你不能用它来利用这些属性。希望这能解决问题。
据我所知,有一些特殊情况,如 $emit 等,您必须使用 $scope 而不能使用它。