我是新來的角JS,我學習它通過各種偉大的鏈接和他們的我碰到是inheritance它展示瞭如何獲得角的js繼承,但我的疑問是筆者說:「由於AngularJS不提供任何內置-in使用繼承的功能,在本博客文章中我將介紹如何將一般JavaScript繼承模式應用於AngularJS組件。「但是我們確實有角度繼承的範圍,那麼他的第一個陳述意味着什麼呢?我是否錯過理解?請解釋一下。AngularJS繼承模式不使用範圍?
回答
由於AngularJS不使用 繼承提供任何內置功能
這意味着,角爲框架不具有繼承(代碼重用)的任何機構,像例如,主幹的extend
功能。但是,您可能仍然需要繼承控制器或服務的功能,因此本文向您展示瞭如何在角度框架中使用原生JS。
我們確實有角
範圍繼承是,範圍確實使用prototypes
,但它使用的不是共享功能(代碼重用),而是讓孩子創建由父母訪問數據,而無需額外的機制
感謝它幫助我清楚地懷疑,範圍是在孩子和父母之間共享數據,但我有一個小懷疑我是否將函數添加到父級作用域不會讓我的子控制器得到它,如果不能,則會增加它的重用性? – Charu
@Charu,是的,如果你的子範圍沒有被隔離,子範圍也可以訪問父類函數。但是我不會重用在作用域上定義的函數,如果您需要一個在多個地方使用的函數,如果它與業務邏輯或控制器相關,那麼最好將它放在某個服務上,如果此函數準備了演示數據 –
Angular _does_有angular.extend() –
AngularJs $ Scope - 在AngularJS中,$ Scope是組織到層次結構中的對象。有一個根作用域,並且根作用域具有一個或多個子作用域。每個視圖都有自己的$ scope(這是根作用域的子視圖),因此無論一個視圖控制器在其$ scope變量上設置了哪些變量,這些變量對其他控制器都是不可見的。
繼承 - 繼承,您可以創建一個新的重用類,擴展和修改在其他類中定義的行爲。其成員被繼承的類稱爲基類,並且繼承這些成員的類稱爲派生類。派生類只能有一個直接基類。繼承是傳遞的。如果ClassC是從ClassB派生的,並且ClassB是從ClassA派生的,則ClassC將繼承在ClassB和ClassA中聲明的成員。
角爲框架,JavaScript是編程語言,繼承語言功能沒有框架的功能。所以從這裏開始 - 如何在JavaScript中進行繼承,並且它可以用於角度(或任何其他框架),該角度只是在javascript中創建的庫。
創建的方法等一些框架在骨幹延伸,而是延伸是方法,該方法是做基於原型繼承在純JS。這不是魔術。同樣的事情在角變量服務來完成,範圍等
另一個設計範例,角涉及繼承常用在於創建服務。我們可以創建一個服務,讓我們把它叫做BaseService,像這樣..
this.publicVar = '..'
this.method1 = function() ..
this.method2 = function() ..
var privateMethod = function() ..
var privateVar = '...';
return this;
and then in another service, inject the BaseService, and then begin by doing
this = Object.create(BaseService);
then you can extend the BaseService in this new service with other methods
this.newServiceMethod = function() ...
- 1. AngularJS:指令模板範圍繼承
- 2. AngularJS指令範圍繼承
- 3. AngularJS $範圍繼承服務
- 4. AngularJS範圍模式和範圍方法
- 5. AngularJS手錶服務價值變化而不是範圍繼承
- 6. JavaScript繼承範圍問題
- 7. 指令/範圍繼承
- 8. 使用propel1.5模式繼承
- 9. AngularJS從另一個控制器繼承一個範圍
- 10. AngularJS遵守指令屬性的表達,繼承範圍動態
- 11. AngularJS Bootstrap模式丟失範圍
- 12. 紅寶石 - 詞法範圍VS繼承
- 13. 可能的繼承範圍問題:
- 14. ng-repeat範圍問題:兩級繼承?
- 15. 繼承時的範圍規則 - C++
- 16. Python的繼承和範圍問題
- 17. C++繼承:確定範圍和成員
- 18. 繼承Mongoose模式
- 19. Javascript繼承模式
- 20. AngularJS模塊:這與$範圍
- 21. 我AngularJS範圍並不在模型
- 22. Java繼承,使用生成器模式
- 23. 使用控制器訪問繼承範圍作爲方法
- 24. Smarty模板繼承只提供本地範圍變量?
- 25. C++中的繼承,範圍和模板構造函數
- 26. AngularJS $適用範圍
- 27. 使用範圍分辨率避免多重繼承導致的模糊性
- 28. AngularJS指令繼承
- 29. AngularJS服務繼承
- 30. 在AngularJS組件中使用繼承
歡迎計算器: - http://stackoverflow.com/help/how-to-ask –
不如google一下.... –
請參閱[我的回答(http://stackoverflow.com/a/39721937/2545680) –