Наследование Javascript и сервисы Angular

0

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

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"), затем (результат);

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

благодаря

Теги:
inheritance

1 ответ

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
    Да, это помогло. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню