扩展角度服务

时间:2016-12-13 09:54:55

标签: angularjs

我想知道扩展方法的最佳方法是什么。例如,我想为具有3个基本功能(创建,编辑,删除)的数据网格实现创建服务。然后我想在所有方法中创建一个回调函数来获取行数据并执行不同的流程。

这样,我可以调用此服务并实现许多具有相同功能但具有不同操作的数据网格。

2 个答案:

答案 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
        });
    }
}]);