jhn*_*ris 10 html javascript twitter-bootstrap
我们的团队为我们的头版实现了一个Twitter bootstrap轮播.一切都适用于Chrome和Firefox.然而,当我们在IE 8中测试它时,轮播图像被破坏并且IE控制台中出现了错误
Controller 'carousel', required by directive 'ngTransclude', can't be found
Run Code Online (Sandbox Code Playgroud)
这是我们轮播的代码(以haml为单位):
%carousel.featuredTags{'ff-destroy-carousel' => 'true', 'interval' => "5000"}
%slide
%img{:src => "#{$assetsPath}/img/pic-bora.png", :alt => ""}
.dimmer
.caption Boracay beach, Aklan
%slide
%img{:src => "#{$assetsPath}/img/pic-bora.png", :alt => ""}
.dimmer
.caption Boracay beach, Aklan
%slide
%img{:src => "#{$assetsPath}/img/pic-bora.png", :alt => ""}
.dimmer
.caption Boracay beach, Aklan
%slide
%img{:src => "#{$assetsPath}/img/pic-bora.png", :alt => ""}
.dimmer
.caption Boracay beach, Aklan
Run Code Online (Sandbox Code Playgroud)
ff-destory-carousel如果浏览器是IE 8并使用bowser.js进行浏览器检查,我们的第一种方法是销毁轮播(因此,指令).但仍然会弹出脚本错误.
有关为什么在IE 8中仍然会发生此类错误的问题,以及它们是否可能为此进行解决?
小智 21
轻松修复而不禁用ui.bootstrap,只需在您自己的.js文件中重新初始化carousel指令:
angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition'])
.controller('CarouselController', ['$scope', '$timeout', '$transition', '$q', function ($scope, $timeout, $transition, $q) {
}]).directive('carousel', [function() {
return {
}
}]);
Run Code Online (Sandbox Code Playgroud)
你可以在我的博客(俄语)中读到这个.
小智 4
我对最后一个 angular-ui-bootstrap 3 分支有同样的问题。class="carousel"当您使用和时,将调用 Carousel 指令slide=""。
它看起来像 angularjs 1.2 中的一个错误,因为它只能在元素或属性上编译。我不够专业,无法研究 $scompile
.directive('carousel', [function() {
return {
restrict: 'EA',
transclude: true,
replace: true,
controller: 'CarouselController',
require: 'carousel',
templateUrl: 'template/carousel/carousel.html',
scope: {
interval: '=',
noTransition: '=',
noPause: '='
}
};
}])
.directive('slide', ['$parse', function($parse) {
return {
require: '^carousel',
restrict: 'EA',
transclude: true,
replace: true,
templateUrl: 'template/carousel/slide.html'
Run Code Online (Sandbox Code Playgroud)
从依赖项中删除 ui.bootstrap.carousel 可以“解决”问题(即使它不应该是这里的问题)