角度控制器:逻辑作为方法还是添加范围?

时间:2014-08-19 20:59:35

标签: javascript angularjs

让我们说我之前的功能没有通过我的API公开,现在我决定公开这个功能(在我的情况下用于测试覆盖)。

将我希望在控制器构造函数之外访问的对象作为$ scope与this.propertyName的属性放在控制器上的参数是什么?

1 个答案:

答案 0 :(得分:0)

唯一不同的是,很多东西都可以访问$scope,但并非所有东西都可以访问控制器的上下文。控制器只是一个标准的Javascript构造函数,因此任何可以将其称为一个的都可以访问this上定义的内容。但HTML模板不能:他们只能看到$scope上定义的内容。所以标准是(大致):

控制器:对于HTML模板,指令等共享的内容使用$scope。对于本地访问的组件或仅在非常有限的情况下使用this,例如通过测试线束(如果有的话)。

指令:对HTML模板或其他指令/控制器共享的任何内容使用$scope。避免使用this

服务:将this用于外部公开的所有内容。为其他一切定义本地(私人)变量。

过滤器:避免在外部公开属性/方法。过滤器不应该以这种方式使用。