让我们说我之前的功能没有通过我的API公开,现在我决定公开这个功能(在我的情况下用于测试覆盖)。
将我希望在控制器构造函数之外访问的对象作为$ scope与this.propertyName
的属性放在控制器上的参数是什么?
答案 0 :(得分:0)
唯一不同的是,很多东西都可以访问$scope
,但并非所有东西都可以访问控制器的上下文。控制器只是一个标准的Javascript构造函数,因此任何可以将其称为一个的都可以访问this
上定义的内容。但HTML模板不能:他们只能看到$scope
上定义的内容。所以标准是(大致):
控制器:对于HTML模板,指令等共享的内容使用$scope
。对于本地访问的组件或仅在非常有限的情况下使用this
,例如通过测试线束(如果有的话)。
指令:对HTML模板或其他指令/控制器共享的任何内容使用$scope
。避免使用this
。
服务:将this
用于外部公开的所有内容。为其他一切定义本地(私人)变量。
过滤器:避免在外部公开属性/方法。过滤器不应该以这种方式使用。