Неизвестный поставщик: uibCarouselProvider при попытке изменить шаблон - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь заставить angularjs хорошо играть с локальными шаблонами, которые переопределяют загрузочные. Первоначально я использовал тот же путь к файлу (например, uib / template / carousel / carousel.html), что хорошо при публикации, но локально это не работает.

Итак, я нашел этот солутон: Отсутствует угловой шаблон директивы начальной загрузки UI

Они сказали, что вы можете переопределить шаблон новым URL с помощью службы $ Обеспечить . Итак, я сделал это:

'use strict';

angular.module('core').config(coreConfig);

function coreConfig($provide) {
    $provide.decorator('uibCarousel', function ($delegate) {
        console.log($delegate[0]);
        $delegate[0].templateUrl = 'bootstrap/carousel/carousel.html';
        return $delegate;
    });
};

который должен работать. мой core модуль выглядит так:

'use strict';

angular.module('core', [
    'ngCookies',
    'ngNotify',
    'ngResource',
    'ngSimpleCache',
    'ui.bootstrap',
    'ui.bootstrap.tpls',
    'ui.router', 
    'ui.select',

    // -- remove for brevity -- //
]);

Как видите, у меня загружен модуль ui.bootstrap.tpls, поэтому теоретически мой код должен работать. Кто-нибудь может придумать причину, по которой это не так?

1 Ответ

0 голосов
/ 06 июля 2018

Извините за все комментарии спама. Я думаю, что нашел ответ на ваш вопрос. Вы должны добавить Directive к директиве при определении декоратора:

function coreConfig($provide) {
    $provide.decorator('uibCarouselDirective', function ($delegate) {
        console.log($delegate[0]);
        $delegate[0].templateUrl = 'bootstrap/carousel/carousel.html';
        return $delegate;
    });
};

Из документов:

У декораторов разные правила для разных сервисов. Это потому что сервисы регистрируются по разному. Услуги выбирается по имени, однако фильтры и директивы выбираются добавив «Фильтр» или «Директива» в конце названия. Предоставляемый $ делегат продиктован типом услуги.

https://docs.angularjs.org/guide/decorators

Это пример из моего собственного (рабочего) кода:

$provide.decorator("uibDatepickerPopupDirective", [
  "$delegate",
  function($delegate) {
    var directive = $delegate[0];
    // removed for brevity
    return $delegate;
   }
 ]);
...