我想知道扩展方法的最佳方法是什么。例如,我想为具有3个基本功能(创建,编辑,删除)的数据网格实现创建服务。然后我想在所有方法中创建一个回调函数来获取行数据并执行不同的流程。
这样,我可以调用此服务并实现许多具有相同功能但具有不同操作的数据网格。
答案 0 :(得分:0)
假设Service1
是基本服务,Service2
是扩展程序。您只需Service1
Service2
中的inject .service('Service1', function() {
this.create = function() {}
this.edit = function() {}
this.delete = function() {}
});
.service('Service2', function(Service1) {
var service1 = angular.copy(Service1);
service1.create = function() { /* New code here */ }
service1.edit = function() { /* New code here */ }
service1.delete = function() { /* New code here */ }
});
即可访问其方法:
Service1
在此处,我在Service2
中创建class Base
{
public:
Base(Child* aChild = 0){}
}
class Child: public Base
{
public:
Child():Base(this){}
}
的副本,以便不更改继承的服务。
答案 1 :(得分:0)
您可以尝试这样的事情:
app.service('datagridservice', function() {
this.create = function (data, callback) {
//do stuff here
callback(/*any parameter you would like to have*/);
}
this.update = function (data, callback) {
//do stuff here
callback(/*any parameter you would like to have*/);
}
this.remove = function (data, callback) {
//do stuff here
callback(/*any parameter you would like to have*/);
}
});
app.service('customiseddgsrv', ['datagridservice', function(datagridservice) {
this.create = function (data) {
datagridservice.create(data, function() {
//do your service 2 stuff here
});
}
this.update = function (data) {
datagridservice.update(data, function() {
//do your service 2 stuff here
});
}
this.remove = function (data) {
datagridservice.remove(data, function() {
//do your service 2 stuff here
});
}
}]);