Странная ошибка зависимости angy-ui datepicker

Просто переустановили некоторые компоненты беседки, но эти компоненты здесь не были обновлены, то же самое 0.12.0 ui.bootstrap, Также используя ui-router 0.2.13 изменить состояние на другую страницу.

Странное сообщение об ошибке

Error: [$compile:ctreq] Controller 'datepicker', required by directive 'daypicker', can't be found!

Но когда я смотрю на файл ui-bootstrap-tpls.js, контроллер datepicker определяется непосредственно над daypicker и должен быть выбран.

Может ли это быть вызвано ошибочным конфликтующим datepicker имя класса или что-то?

Я знаю, что это не так много, но я буду обновлять, так как у меня есть время, чтобы добавить код. Кажется, может быть конфликт datepicker где-то. Это происходит только в StateChange с одной страницы на другую. Полный поток использования DatePicker работает до этой последней страницы. Как можно пропустить зависимость контроллера, если она находится в том же файле?

Если бы кто-нибудь видел это раньше, я был бы благодарен за любые советы.

ОБНОВЛЕНИЕ 23 апреля 15: использовалось модальное диалоговое окно с формой, которая отправляла пользователя на другую страницу при нажатии ОК.

3 ответа

Я имел эту ошибку обновления до ui.bootstrap 0.14.x.

Я переписал шаблоны в собственных модулях, что вызвало проблемы:

    angular.module("template/datepicker/datepicker.html", []).run(["$templateCache", function ($templateCache) {
    $templateCache.put("template/datepicker/datepicker.html",
      "<div ng-switch=\"datepickerMode\" role=\"application\" ng-keydown=\"keydown($event)\">\n" +
      "  <daypicker ng-switch-when=\"day\" tabindex=\"0\"></daypicker>\n" +
      "  <monthpicker ng-switch-when=\"month\" tabindex=\"0\"></monthpicker>\n" +
      "  <yearpicker ng-switch-when=\"year\" tabindex=\"0\"></yearpicker>\n" +
      "</div>");
    }]);

После удаления модулей снова заработало.

Первоначально я изменил шаблоны для использования значков шрифта вместо глифов. Теперь я перезаписываю класс глификонов css, чтобы перейти к значкам со шрифтами:

.glyphicon {
    font: normal normal normal 14px/1 ourIconFont;
}
.glyphicon-arrow-right:before,
.glyphicon-chevron-right:before {
    content: "\f054";
}
.glyphicon-arrow-left:before,
.glyphicon-chevron-left:before {
    content: "\f053";
}

В случае той же проблемы наше решение состояло в том, что после обновления до uib 0.14 у нас был собственный шаблон для datepicker, и мы должны были добавить префиксы uib к дочерним директивам внутри datepicker (день, месяц, год). например

<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">
  <daypicker ng-switch-when="day" tabindex="0"></daypicker>
  <monthpicker ng-switch-when="month" tabindex="0"></monthpicker>
  <yearpicker ng-switch-when="year" tabindex="0"></yearpicker>
</div>

Изменился на

<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">
  <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>
  <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>
  <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>
</div>

Вам необходимо обновить ваш ui.bootstrap.0.12.0.js до ui-bootstrap-tpls-0.13.3.js

Другие вопросы по тегам