2016-12-13 13 views
1

メソッドを拡張するための最良の方法は何か知りたい。たとえば、3つの基本機能(作成、編集、削除)を持つDataGrid実装へのサービスを作成したいとします。そして、すべてのメソッドで行データを取得し、別のフローを実行するコールバック関数を作成したいと思います。拡張された角度サービス

このように、私はこのサービスを呼び出して、同じ機能を持つが動作が異なる多くのデータグリッドを実装できます。

+1

あなたはあなたのサービスでは、これらのCRUDメソッドのパラメータとしてコールバック関数を渡すと、メソッドが終了した後にそれらを呼び出すことができます。それはあなたのために働くのですか? – Yaser

+0

@ YaserAdelMehraban私のための例を書くことができますか? –

+0

anglejsデコレータをルックアップします。それらは注入可能なアイテムを伸ばす方法で作られた角度です。 – ste2425

答えて

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

たとえば、Service1が基本サービスで、Service2エクステンダです。あなたはそのメソッドにアクセスするためにService2injectService1にあります

ここ
.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 */ }   
}); 

私は継承されたサービスを変更しないようにService2Service1のコピーを作成します。

+0

この場合、service1からすべてのメソッドを保持し、各メソッドのフローを変更するコールバックを設定したいとします。 –

+0

'Service1'のメソッドを保持しています。' Service1.create(); 'から呼び出すことができます。ここで 'Service2'は** Service2 **のメソッドを**書き換える可能性を与えます。 – Mistalis

関連する問題