メソッドを拡張するための最良の方法は何か知りたい。たとえば、3つの基本機能(作成、編集、削除)を持つDataGrid実装へのサービスを作成したいとします。そして、すべてのメソッドで行データを取得し、別のフローを実行するコールバック関数を作成したいと思います。拡張された角度サービス
このように、私はこのサービスを呼び出して、同じ機能を持つが動作が異なる多くのデータグリッドを実装できます。
メソッドを拡張するための最良の方法は何か知りたい。たとえば、3つの基本機能(作成、編集、削除)を持つDataGrid実装へのサービスを作成したいとします。そして、すべてのメソッドで行データを取得し、別のフローを実行するコールバック関数を作成したいと思います。拡張された角度サービス
このように、私はこのサービスを呼び出して、同じ機能を持つが動作が異なる多くのデータグリッドを実装できます。
あなたはこのような何かを試すことができます。
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
});
}
}]);
たとえば、Service1
が基本サービスで、Service2
エクステンダです。あなたはそのメソッドにアクセスするためにService2
でinjectService1
にあります
.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 */ }
});
私は継承されたサービスを変更しないようにService2
にService1
のコピーを作成します。
この場合、service1からすべてのメソッドを保持し、各メソッドのフローを変更するコールバックを設定したいとします。 –
'Service1'のメソッドを保持しています。' Service1.create(); 'から呼び出すことができます。ここで 'Service2'は** Service2 **のメソッドを**書き換える可能性を与えます。 – Mistalis
あなたはあなたのサービスでは、これらのCRUDメソッドのパラメータとしてコールバック関数を渡すと、メソッドが終了した後にそれらを呼び出すことができます。それはあなたのために働くのですか? – Yaser
@ YaserAdelMehraban私のための例を書くことができますか? –
anglejsデコレータをルックアップします。それらは注入可能なアイテムを伸ばす方法で作られた角度です。 – ste2425