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

时间:2016-08-05 08:07:50

标签: angularjs angularjs-directive

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

$scope.$on( '$destroy', function() {...} );
$scope.$on( '$stateChangeSuccess', function() {} );

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

由于

1 个答案:

答案 0 :(得分:5)

不使用$ scope的想法是:

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

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

  • 不会通过在每个变量之前污染你的javascript代码 功能与$ scope

如果您需要广播事件或观看更改,那么使用$ scope是完全没问题的(特别是如果您没有像角度1.5中的.components那样的替代方案)

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