2016-09-27 56 views
0

我是新来的角JS,我学习它通过各种伟大的链接和他们的我碰到是inheritance它展示了如何获得角的js继承,但我的疑问是笔者说:“由于AngularJS不提供任何内置-in使用继承的功能,在本博客文章中我将介绍如何将一般JavaScript继承模式应用于AngularJS组件。“但是我们确实有角度继承的范围,那么他的第一个陈述意味着什么呢?我是否错过理解?请解释一下。AngularJS继承模式不使用范围?

+1

欢迎计算器: - http://stackoverflow.com/help/how-to-ask –

+1

不如google一下.... –

+0

请参阅[我的回答(http://stackoverflow.com/a/39721937/2545680) –

回答

1

由于AngularJS不使用 继承提供任何内置功能

这意味着,角为框架不具有继承(代码重用)的任何机构,像例如,主干的extend功能。但是,您可能仍然需要继承控制器或服务的功能,因此本文向您展示了如何在角度框架中使用原生JS。

我们确实有角

范围继承是,范围确实使用prototypes,但它使用的不是共享功能(代码重用),而是让孩子创建由父母访问数据,而无需额外的机制

+0

感谢它帮助我清楚地怀疑,范围是在孩子和父母之间共享数据,但我有一个小怀疑我是否将函数添加到父级作用域不会让我的子控制器得到它,如果不能,则会增加它的重用性? – Charu

+0

@Charu,是的,如果你的子范围没有被隔离,子范围也可以访问父类函数。但是我不会重用在作用域上定义的函数,如果您需要一个在多个地方使用的函数,如果它与业务逻辑或控制器相关,那么最好将它放在某个服务上,如果此函数准备了演示数据 –

+0

Angular _does_有angular.extend() –

0

AngularJs $ Scope - 在AngularJS中,$ Scope是组织到层次结构中的对象。有一个根作用域,并且根作用域具有一个或多个子作用域。每个视图都有自己的$ scope(这是根作用域的子视图),因此无论一个视图控制器在其$ scope变量上设置了哪些变量,这些变量对其他控制器都是不可见的。

继承 - 继承,您可以创建一个新的重用类,扩展和修改在其他类中定义的行为。其成员被继承的类称为基类,并且继承这些成员的类称为派生类。派生类只能有一个直接基类。继承是传递的。如果ClassC是从ClassB派生的,并且ClassB是从ClassA派生的,则ClassC将继承在ClassB和ClassA中声明的成员。

+0

我是知道的,但我的疑问是笔者所说的话“由于AngularJS不使用提供任何内置功能继承,在这篇博客文章中我将介绍如何将一般JavaScript继承模式应用于AngularJS组件。“但是我们确实有范围,那么他的意思是什么? – Charu

+0

范围只是一个对象,它指的是应用程序模型,它将绑定ng-model的值,并且它可以观察表达式和事件 –

+0

@ MBalajivaishnav我理解范围我的担心不是这样,请看看我编辑的问题和上面的评论,看看我的疑问 – Charu

0

角为框架,JavaScript是编程语言,继承语言功能没有框架的功能。所以从这里开始 - 如何在JavaScript中进行继承,并且它可以用于角度(或任何其他框架),该角度只是在javascript中创建的库。

创建的方法等一些框架在骨干延伸,而是延伸是方法,该方法是做基于原型继承在纯JS。这不是魔术。同样的事情在角变量服务来完成,范围等

0

另一个设计范例,角涉及继承常用在于创建服务。我们可以创建一个服务,让我们把它叫做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() ...