在我的应用程序中,我使用this
而不是$scope
来保存变量和函数,并在HTML中使用控制器别名来访问。
在这种情况下,如何更新我的视图,做类似$digest()
或$apply()
的$scope
?
或者有必要注入$scope
来做到这一点?
在我的应用程序中,我使用this
而不是$scope
来保存变量和函数,并在HTML中使用控制器别名来访问。
在这种情况下,如何更新我的视图,做类似$digest()
或$apply()
的$scope
?
或者有必要注入$scope
来做到这一点?
controllerAs
的方式与控制器中的$scope
无关。这是避免$scope
与模板之间的联系并提高可读性的模式。但是,即使您使用的是controllerAs
语法,也可以在控制器上注入$scope
而不会出现问题。这就是controllerAs
的意思,使用$scope
来执行任务,例如$scope.$apply
,但不能作为视图模型。
即使您使用的是controllerAs
,注入$scope
也不是一个错误的做法。但是,如果您使用$scope
来像查看模型一样工作,那将是一种不好的做法。无论如何,即使你不注入,$scope
将以某种方式存在于控制器内部,它是控制器的一部分。 controllerAs
的意思是将视图模型的作用从$scope
中分离出来。最终,视图模型成为示波器的一部分,但它与$scope
的其他功能是分开的。
@ Lai32290良好的工作采用controllerAs
公约!它节省了头痛,并使嵌套示波器更清晰!至于您的问题,您无法避免使用$scope
来拨打$digest
或$apply
。请记住,在幕后,angularjs仍将controllerAs
附加到$scope
,所以它仍然存在。
当事件发生在角度生命周期之外时,您需要使用它 - 例如使用来自其他外部库的套接字或事件。
http://www.codelord.net/2015/11/11/angular-controlleras-when-should-you-use-scope/
您避免使用'$ scope'的任何特定原因?它用于视图和控制器之间的数据绑定。 –
使用'this'与保存变量和函数无关。如果你使用'$ scope',将会是相同数量的变量。 – charlietfl
@SterlingArcher我没有特别避开'$ scope',只是试着去寻找@john_papa风格指南(https://github.com/johnpapa/angular-styleguide/ blob/master/a1/README.md#controllers) – Lai32290