В функции конфигурации внутри указывается, как использовать factory/service для пользовательских свойств данных в angular js.

В приведенном ниже примере я должен использовать службу внутри ролей, как использовать службу и возвращать значение массива оттуда

Пример :

 .config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider, $rootScope) {
    $urlRouterProvider.otherwise('signin');
    $stateProvider.state('site', {
        'abstract': true,
        resolve: {
            authorize: ['authorization', function (authorization) {
                return authorization.authorize();
            }, ]
        }
    })
    .state('signin', {
        parent: 'site',
        url: '/signin',
        data: {
            roles: (function () {
                //principal.GetRoles(); --> in the below line i am returning hardcoded array value but i have take that array value from below principle factory 
                return ['Dev','Admin'];
            })()
        },
        views: {
            '': { templateUrl: '/signin.html' },
            'content@': {
                templateUrl: '/index.html',
                controller: 'SigninCtrl'
            }
        },
    })}
])

Сервис / Фабрика: - отсюда мне нужно return array к указанным выше данным настраиваемого объекта-> роли, которые находятся внутри signin состояния

Пример ниже: -

.factory('principal', ['$q', '$http', '$timeout', '$cookieStore', '$cookies', function ($q, $http, $timeout, $cookieStore, $cookies) {
var _identity = undefined,
  _authenticated = false;

return {
    isIdentityResolved: function () {
        return angular.isDefined(_identity);
    },
    isAuthenticated: function () {
        return _authenticated;
    },
    RedirectUrl: function (absUrl) {
        $cookieStore.put('RedirectUrl', absUrl);
        return true;
    },

    GetRoles: function () {
        return ['Dev','Admin']
    },
 }
])

person Raj    schedule 09.03.2015    source источник
comment
Вам нужно добавить зависимость к вашей principal фабрике...   -  person Łukasz Szewczak    schedule 09.03.2015
comment
если я добавляю principal в функцию конфигурации, я также не могу вызывать службы внутри объектов данных   -  person Raj    schedule 09.03.2015


Ответы (1)


С этим решением (случайный пример!) вам нужно будет внедрить эти зависимости в ваш контроллер. Одной из таких зависимостей является ваш сервис! Оттуда вы можете вызвать любой метод, который вы определили в своей службе (SomeService.getSomeArray()). В вашем случае метод службы вызывает API, который будет коррелировать с искомым массивом. Внедрение вашего сервиса в ваш контроллер позволит вам манипулировать данными любым способом.

 angular.module('dashboard.services.Transaction', [
      'dashboard.Config',
      'dashboard.Utils',
      'dashboard.services.GeneralModel'
])

Это будут встроенные или пользовательские зависимости, которые вы можете добавить в свой модуль.

Обязательно обработайте внедрение зависимостей

.service('TransactionService', function(GeneralModelService, otherDependencies ) {
  var self = this;

  this.getPaymentInfo = function(id, callback) {
    // API callback which is calling your back end api, your params are whatever params
    // your remote method expects
  };
});
person sirrele    schedule 10.12.2016