Angularjs扩展了服务和继承
Angularjs extending services and inheritance
我正在寻找一种方法来扩展angular中的服务。我不确定angular是否有扩展的概念,或者它是否仅仅依赖于注入来实现代码重用。因此,到目前为止,我所尝试的是以下
方法1
myApp.factory('myFactory', function ($http) {
return{
common: function(){
console.log('I am from myFactory');
}
});
myApp.factory('myFactory1', function (myFactory) {
return {
common: myFactory.common
};
});
或
myApp.factory('myFactory1', function (myFactory) {
return angular.extend(myFactory, {
common: function() {
console.log('I am form Factory1')
}
});
});
两种方法都可以,但我的主要问题是如何调用父节点。例如:
在myFactory1 common: function(){
console.log('I am from myFactory1');
this.prototype.common.apply(this, arguments);
}
我想打印出'I am from myFactory1', 'I am from myFactory'
一般在angular中支持这个吗?或者我应该采用不同的方法来扩展/继承功能?
谢谢
我过去实现这一点的方法是让基本的angular服务返回一个普通的旧Javascript '类'的实例。扩展的服务,然后创建基类的实例,并使用标准的JS原型继承来扩展类,并返回新扩展对象的实例。
例如:// Base service
app.factory('Shape', function() {
var Shape = function(colour) {
this.colour = colour;
};
Shape.prototype.getColour = function() {
return this.colour;
};
return Shape;
});
// Extended service
app.factory('Square', function(Shape) {
var Square = function(colour) {
Shape.apply(this, arguments);
};
Square.prototype = new Shape();
Square.prototype.getSides = function() {
return 4;
};
return Square;
});
Square
@romiem代码段的一些调整:
// Extended service
app.factory('Square', function(Shape) {
var Square = function(colour) {
Shape.call(this, arguments);
};
Square.prototype = Object.create(Shape.prototype);
Square.prototype.constructor = Square;
Square.prototype.getSides = getSides;
return Square;
function getSides() {
return 4;
}
});
此代码段遵循最佳实践,避免了通过new Shape()
创建新实例的问题。也与旧的浏览器兼容。
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 从控制器继承了隔离的作用域以生成可重用的指令
- 使用angular.js问题的JavaSpringREST服务
- AngularJS-需要在index.html页面中访问来自服务的数据
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 如何在Ionic2测试版中包含Ionic.io服务
- 基于api密钥的NodeJS web服务
- Redux应用程序结构-在哪里放置服务/业务逻辑
- 使用Object.create()的角度服务继承
- 使用 Restangular 保持 CRUD 干燥:指令、继承控制器或包装服务
- AngularJS$scope继承服务
- AngularJS服务继承
- Angular2依赖项注入,在类继承期间未注入服务
- 角度模态>Ctrl+gt;服务>Ctrl继承不起作用
- 有没有一种方法可以让子控制器继承服务呢?从其父节点获取
- Angularjs扩展了服务和继承
- Javascript继承和Angular服务