Я новичок в AngularJS и буду благодарен за ваш совет. У меня есть ползунок с изображениями:
<ul rn-carousel rn-carousel-index="carouselIndex" rn-carousel-buffered>
<li ng-repeat="slide in slides track by slide.id" ng-class="'id-' + slide.id">
<div ng-style="{'background-image': 'url(' + slide.image + ')'}" class="bgimage">
</div>
</li>
</ul>
В моем контроллере я назначаю $scope.slides
некоторый массив изображений:
$scope.slides = [];
$.each(defaultImages,function(i, element)
{
var slide = {
image://...
};
$scope.slides.push(slide);
});
Кроме того, у меня есть функция, которая изменяет массив слайдов:
$scope.colorClicked = function ($index, color_id) {
//...
$scope.slides = [];
$.each(images,function(i, element)
{
var slide = {
image:/...
};
$scope.slides.push(slide);
});
}
У меня есть два вопроса:
1) Он отлично работает, но иногда изображение, которое в настоящее время отображается на слайдере, не меняется, когда colorClicked
функция colorClicked
.
Интересно, нужно ли мне как-то обновить слайдер или область? Я попробовал $scope.$apply()
в моей функции, но это не помогло.
2) Даже если я передаю массив в коллекцию слайдов, я все равно получаю ошибку в моей консоли: Error: the slides collection must be an Array
хотя мой слайдер отлично работает.
Ошибка Soluction 'Ошибка: сборка слайдов должна быть массивом при ошибке (native) угло-carousel.min.js: 8'
//Controller
$scope.banners = [];
Banners.getListBanners().then(function (banners) {
$scope.banners = banners;
});
//view
<ul rn-carousel rn-carousel-auto-slide rn-carousel-transition="slide" ng-show="banners.length > 0">
<li ng-repeat="banner in banners">
<p ng-bind-html="banner.title | to_trusted"></p>
<img ng-if="isBlank(banner.link)" ng-src="{{banner.img}}" alt="{{banner.title | to_trusted}}">
<a ng-if="!isBlank(banner.link)" ng-click="openInExternalBrowser(banner.link, banner.type)" href="#">
<img ng-src="{{banner.img}}" alt="{{banner.title | to_trusted}}">
</a>
</li>
</ul>
ng-style
наstyle="background-image: url({{slide.image}})"