0

angular サービスで関数を定義し、その関数定義を別のサービスの関数で使用するにはどうすればよいですか。以下のように実装していますが、うまくいきません。ParentService インスタンスを返したくありません。PersonService の親クラスとして使用されるコンストラクターの定義だけです。

ご協力いただきありがとうございます。

var personModule = angular.module('personModule',['coreModule']).service('personService', function($q, jAjax){

    function PersonService($q, jAjax) {
        var self = this;
        ParentService.call(self, $q, jAjax);
        this.name = "person";
    };

    inherit(ParentService, PersonService);

  PersonService.prototype.loadPersonList = function() {
        var self = this;
        var deferred = self.$q.defer();
        ParentService.prototype.loadList.call(self, "meta", function(data){
            self.items = data;
            deferred.resolve(data);
        });
        return  deferred.promise;
    };

  return new PersonService($q);
});

var coreModule = angular.module('coreModule',[]).service('commonService', function(jAjax){

 var ParentService = function(jAjax) {
 };

 ParentService.prototype.loadList = function(docType, fn) {
    var self = this;
    var url = self.name + "/get";

    self.jAjax.get(url).success(function(data) {
        if (fn !== undefined) {
            fn.call(this, data);
        }
    });
 };

 return ParentService;
});
4

1 に答える 1

0

御時間ありがとうございます。これに対する解決策を見つけました。parentService では、関数定義を含むオブジェクトを返します

return {ParentService:ParentService};

、次に他のモジュールでプロパティとして取得します

inherit(commonService.ParentService, PersonService);

固定コードは以下

var personModule = angular.module('personModule',['coreModule']).service('personService', function($q, jAjax, commonService){

function PersonService($q, jAjax, commonService) {
    var self = this;
    ParentService.call(self, $q, jAjax);
    this.name = "person";
};

inherit(commonService.ParentService, PersonService);

PersonService.prototype.loadPersonList = function() {
    var self = this;
    var deferred = self.$q.defer();
    commonService.ParentService.prototype.loadList.call(self, "meta", function(data){
        self.items = data;
        deferred.resolve(data);
    });
    return  deferred.promise;
};

return new PersonService($q, jAjax, commonService);
 });

  //Calling module
 var coreModule = angular.module('coreModule',[]).service('commonService',function(jAjax){

 var ParentService = function(jAjax) {
 };

 ParentService.prototype.loadList = function(docType, fn) {
  var self = this;
  var url = self.name + "/get";

  self.jAjax.get(url).success(function(data) {
     if (fn !== undefined) {
         fn.call(this, data);
     }
    });
  };

  return {ParentService:ParentService};
  });
于 2013-08-09T07:35:03.687 に答える