2015-07-22 4 views
0

Я пытаюсь создать общий класс обслуживания, который я могу использовать в контроллерах для получения данных. Вот мой код:Наследование Javascript и Угловые службы

appClasses.factory('baseService', function ($http, $q) { 

var apiUrl = "http://localhost:1234/services/"; 

// instantiate initial object 
var baseService = function() { 
}; 
baseService.prototype.execute = function (webService, method, params) { 
    params = typeof params !== "undefined" ? params : {}; 
    var deferred = $q.defer(); 
    var response = $http({ 
     method: "post", 
     dataType: "json", 
     data: JSON.stringify(params), 
     headers: { 
      'Content-Type': "application/json; charset=utf-8", 
     }, 
     url: apiUrl + webService + "/" + method 
    }); 
    response.success(function (data) { 
     deferred.resolve(data); 
    }); 
    response.error(function (data) { 
     alert('Error'); 
    }); 
    // Return the promise to the controller 
    return deferred.promise; 
}; 
return baseService; 

}); Затем в модуле я использую BaseService создать конкретную услугу модуля:

module.factory("moduleService", function (baseService) { 
// create our new custom object that reuse the original object constructor 
var alarmsService = function() { 
    baseService.apply(this, arguments); 
}; 
// reuse the original object prototype 
moduleService.prototype = new baseService(); 

return moduleService; 

});

Наконец, вот как я использую его в контроллер:.

module.controller('moduleController', function ($scope, moduleService) { 

......

moduleService.prototype.execute ("webservice_name.asmx", "webservice_method"), то (результат);

Все работает нормально, но меня смущает факт, что я должен использовать прототип для запуска функции «выполнить». Правильно ли я все делаю?

Благодаря

ответ

1

Вы можете изменить свой завод на следующее .. этот пути больше не нужно использовать прототип больше для вызова методы барщины.

module.factory("moduleService", function (baseService) { 
// create our new custom object that reuse the original object constructor 
var alarmsService = function() { 
    baseService.apply(this, arguments); 
}; 
// reuse the original object prototype 
alarmsService.prototype = new baseService(); 

return new alarmsService(); 
+0

Да, это помогло. Большое спасибо. – Mark

Смежные вопросы