Angularjs 在控制器中仅使用此选项可获取$emit角度

Angularjs 在控制器中仅使用此选项可获取$emit角度,angularjs,scope,controller,this,emit,Angularjs,Scope,Controller,This,Emit,我们能否在控制器中仅使用此,而不使用$scope 在某些情况下当然是的,我知道。。。但是 如果我们需要$emit,$broadcast和一些其他角度特征,我们只能在范围内找到它们?我们可以通过这种方式获得它吗?或者通过其他方式获得它吗?据我所知,有一些特殊情况,如$emit等,您必须使用$scope,但不能使用它。当您以这种格式创建控制器时: angular.module('myModule').controller('myController',['$scope',function($scop

我们能否在控制器中仅使用
,而不使用
$scope

在某些情况下当然是的,我知道。。。但是


如果我们需要
$emit
$broadcast
和一些其他角度特征,我们只能在范围内找到它们?我们可以通过这种方式获得它吗?或者通过其他方式获得它吗?

据我所知,有一些特殊情况,如$emit等,您必须使用$scope,但不能使用它。

当您以这种格式创建控制器时:

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中,控制器基本上用于简化视图(由指令处理)和服务(负责业务逻辑)之间的通信

要启用此功能,您可以使用依赖项注入,并将
$scope
对象插入控制器,如上所示

当您使用
ng controller=“myController”
实例化控制器时,将创建一个新的作用域对象以与控制器对象一起使用。作为参数传递给控制器构造函数的
$scope
对象具有新创建的作用域

以下是angular文档的摘录:

属性包含视图模型(将由视图显示的模型)。所有$scope属性都将在注册控制器的DOM中的某个点对模板可用

因此,基本上,您仅附加到$scope对象的任何属性都可以在DOM中操作

附加到此的任何属性在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> 
这是您的角度配置:
角度.module('myModule').controller('myController',['$scope',函数($scope){
$scope.name='kiran'
this.message='hello world';
}]); 
这是您的html:
{{name}}

输出将是:kiran

如果您尝试过:
{{message}

,它将抛出一个错误

只有作用域对象包含$$watchers之类的属性,它是当前作用域上监视的所有变量的列表,$watch API,$on API用于事件处理等等

所以你不能用它来利用这些属性。希望这能把事情弄清楚。

看一看