Странная ошибка зависимости 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