Angularjs bindToController如何摆脱所有$scope($scope.$on)

Angularjs bindToController如何摆脱所有$scope($scope.$on),angularjs,angularjs-directive,Angularjs,Angularjs Directive,我在Angular1.4.12上使用controllerAs和bindToController“模式”实现AngularJS指令,以便有一个干净的控制器,它不依赖于$scope。 但是,我仍然发现在以下几行中很难去掉$scope: $scope.$on( '$destroy', function() {...} ); $scope.$on( '$stateChangeSuccess', function() {} ); 你知道怎么处理这个案子吗 谢谢不使用$scope的想法是: 不要使用没有

我在Angular1.4.12上使用controllerAs和bindToController“模式”实现AngularJS指令,以便有一个干净的控制器,它不依赖于$scope。 但是,我仍然发现在以下几行中很难去掉$scope:

$scope.$on( '$destroy', function() {...} );
$scope.$on( '$stateChangeSuccess', function() {} );
你知道怎么处理这个案子吗


谢谢

不使用$scope的想法是:

  • 不要使用没有上下文的变量污染HTML,并且在同一范围内可能有冲突的变量名

    ng model=“name”VS ng model=“userController.user.name”

  • 通过在每个变量前面加上 具有$scope的函数

如果您需要广播事件或观看更改,使用$scope是完全可以的(特别是如果您没有其他选择,如angular 1.5中的.components)

$scope
视为Angular向您提供的服务,就像
$window
$state
一样。
如果你需要它,你可以使用它。(但即使可以,也不要把代码放在那里)

不使用$scope的想法是:

  • 不要使用没有上下文的变量污染HTML,并且在同一范围内可能有冲突的变量名

    ng model=“name”VS ng model=“userController.user.name”

  • 通过在每个变量前面加上 具有$scope的函数

如果您需要广播事件或观看更改,使用$scope是完全可以的(特别是如果您没有其他选择,如angular 1.5中的.components)

$scope
视为Angular向您提供的服务,就像
$window
$state
一样。
如果你需要它,你可以使用它。(但即使可以,也不要把代码放在那里)

可能与我读到的Angular 1.5.x中引入了生命周期挂钩类似。也许这就是我要找的。不幸的是,我无法将我的项目升级到AngularJS 1.5.xlifecycle挂钩当前仅对组件可用您将不得不继续使用$scope for events。。。这是一种为你提供这些服务的服务services@svarog它们在指令中可用。组件是糖化的指令。可能是我读到的Angular 1.5.x中引入了生命周期挂钩的副本。也许这就是我要找的。不幸的是,我无法将我的项目升级到AngularJS 1.5.xlifecycle挂钩当前仅对组件可用您将不得不继续使用$scope for events。。。这是一种为你提供这些服务的服务services@svarog它们在指令中可用。组件是糖化的指令。你是正确的。我要做的唯一补充是,新的ui.Router反对$stateChangeSuccess事件,而支持onSuccess订阅挂钩:感谢您指出这种反对。不幸的是,我们目前使用的是ui路由器V0.2.15,它不提供连接到成功的可能性。我要做的唯一补充是,新的ui.Router反对$stateChangeSuccess事件,而支持onSuccess订阅挂钩:感谢您指出这种反对。不幸的是,我们目前使用的是ui路由器V0.2.15,它不提供连接到onSuccess的可能性