我正在开始使用MEAN.JS,并试图在Angular Bootstrap示例页面上实现carousel示例。我使用命令yo meanjs创建了一个样板文件项目,并修改了home.client.view.html以删除大屏幕,并用以下html(从ui引导示例复制)
<div ng-controller="MyCarouselController">
<div style="height: 305px">
<carousel interval="myInterval">
<slide ng-repeat="slide in slides" active="slide.active">
<img ng-src="{{slide.image}}" style="margin:auto;">
<div class="carousel-caption">
<h4>Slide {{$index}}</h4>
<p>{{slide.text}}</p>
</div>
</slide>
</carousel>
</div>
<div class="row">
<div class="col-md-6">
<button type="button" class="btn btn-info" ng-click="addSlide()">Add Slide</button>
</div>
<div class="col-md-6">
Interval, in milliseconds: <input type="number" class="form-control" ng-model="myInterval">
<br />Enter a negative number to stop the interval.
</div>
</div>
</div>
我添加了一个名为MyCarouselController的控制器(文件名carousel.client.controller.js),并添加了来自示例
的javascriptangular.module('core').controller('MyCarouselController', ['$scope', 'Authentication',
function($scope, Authentication) {
$scope.myInterval = 5000;
var slides = $scope.slides = [];
$scope.addSlide = function() {
var newWidth = 600 + slides.length;
slides.push({
image: 'http://placekitten.com/' + newWidth + '/300',
text: ['More','Extra','Lots of','Surplus'][slides.length % 4] + ' ' +
['Cats', 'Kittys', 'Felines', 'Cutes'][slides.length % 4]
});
};
for (var i=0; i<4; i++) {
$scope.addSlide();
}
}
]);
问题发生在第一次转换(自动或用户单击)之后。carousel变得无响应,开发人员控制台中没有显示任何错误消息。
我已经验证了ui-bootstrap也被作为一个依赖项包含在config.js文件中。
我不知道从这里往哪里看,希望有人能给我指出正确的方向。我已经把这个项目的副本上传到Github上,有兴趣的人可以看看。
https://github.com/jamesamuir/MEANTest这是angular动画模块和angular bootstrap的一个bug…很显然,这个问题一直存在,需要一些挖掘,但还是有答案的。
有一堆活塞在那里(见github angular-ui/bootstrap问题线程#1273 #1350)。要点是:
控制器中的$ animation .enabled(false)将修复它。当然,这取决于你是否在控制器中使用动画,你可能需要摆弄一下。
把它放到你的控制器中,它就会工作。您可以尝试其他设置(设置为true),看看它是如何破坏的。你需要在你的控制器中引用$animate来做到这一点。
angular.module('core').controller('MyCarouselController', ['$scope', 'ngAnimate', 'Authentication',
function($scope, $animate, Authentication) {
$animate.enabled(false);