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

gab*_*ric 0 angularjs angularjs-directive

我正在使用controllerAs和bindToController"pattern"在Angular 1.4.12上实现AngularJS指令,以便拥有一个不依赖于$ scope的干净控制器.但是我仍然觉得很难摆脱这些线上的$ scope:

$scope.$on( '$destroy', function() {...} );
$scope.$on( '$stateChangeSuccess', function() {} );
Run Code Online (Sandbox Code Playgroud)

知道如何处理这种情况吗?

谢谢

gyc*_*gyc 5

不使用$ scope的想法是:

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

    ng-model ="name"VS ng-model ="userController.user.name"

  • 通过在每个变量和函数前面使用$ scope来污染你的javascript代码

如果你需要广播事件或观察更改,使用$ scope是完全没问题的(特别是如果你没有像角度1.5中的.components那样的话)

$scope由角提供给你就像一个服务$window$state.如果您需要它,您可以使用它.(但是不要去代码,即使你可以)

  • 你是现货.我要做的唯一补充是新的ui.Router弃用了$ stateChangeSuccess事件,转而使用onSuccess订阅钩子:https://ui-router.github.io/docs/latest/classes/transition.transitionservice.html#的onSuccess (2认同)