在我的應用程序中,我使用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