Установите для компонента TemplateURL настроенный путь

Я пытаюсь настроить компонент с помощью templateURL, который является относительным путем, заданным модулем конфигурации. Однако, поскольку он находится за пределами контроллера, я не могу понять, как ввести зависимость в конфигурацию.

приложение.config.js:

angular.module('app.config', [])
    .constant('config', {
     TEMPLATES_URL: 'js_2/templates/',
     COMPONENTS_URL: 'js_2/components/'

})

home.app.js:

angular.module('home.app', ['rest.service', 'app.config']);

home.component.js:

angular.module('home.app').component('home', {
    /* HOW DO I INJECT THE 'config' DEPENDENCY */
templateUrl: config.TEMPLATES_URL + 'home.template.html',
controller: ....})

Я знаю, что при внедрении в контроллер вы просто вводите «config» и используете его, но я не знаю, как это сделать с компонентом.

Спасибо


person pasquers    schedule 01.08.2016    source источник
comment
Возможный дубликат метода компонента Angular 1.5 templateUrl + function   -  person Estus Flask    schedule 01.08.2016
comment
Я не верю, что эта ссылка дает какой-либо способ фактического внедрения в метод templateURL, хотя не так ли? Следовали бы вы той же процедуре templateUrl: ['config', function(....)]   -  person pasquers    schedule 01.08.2016
comment
Это правильно. Все внедряемые функции в Angular вызываются одинаковым образом (фреймворк вызывает их с помощью метода $injector.invoke) и следуют одной и той же хорошо известной схеме внедрения зависимостей. Ты знаешь одного, ты знаешь их всех.   -  person Estus Flask    schedule 01.08.2016


Ответы (1)


Вам нужно настроить функцию в templateUrl, которая внедряет вашу службу и возвращает URL-адрес, например:

  angular.module('fsad').component('fsadLeefloon', {
    bindings: {
      onChanges: '&?'
    },
    templateUrl: function(appConstant){return appConstant.paths.modules.fsad + 'leefloon/fsad-leefloon.html'},
    controller: controller
  });

Кроме того, это руководство по структуре может помочь вам настроить хороший стиль компонента.

person kevinius    schedule 10.08.2016