我正在使用controllerAs和bindToController“pattern”在Angular 1.4.12上实现AngularJS指令,以便拥有一个不依赖于$ scope的干净控制器。 但是我仍然觉得很难摆脱这些界限的范围:
$scope.$on( '$destroy', function() {...} );
$scope.$on( '$stateChangeSuccess', function() {} );
知道如何处理这种情况吗?
由于
答案 0 :(得分:5)
不使用$ scope的想法是:
不会使用没有上下文的变量污染HTML,并且可能在同一范围内存在冲突的变量名称。
ng-model =“name”VS ng-model =“userController.user.name”
不会通过在每个变量之前污染你的javascript代码 功能与$ scope
如果您需要广播事件或观看更改,那么使用$ scope是完全没问题的(特别是如果您没有像角度1.5中的.components那样的替代方案)
将$scope
视为Angular提供给您的服务,就像$window
或$state
一样。
如果您需要它,您可以使用它。 (但即使你可以,也不要把代码放在那里)