Карусель с ограничением ng-repeat до 3 в одной карусели

Я пытаюсь использовать ng-repeat с каруселью. Но, 3 элемента массива должны отображаться в одной карусели. Если длина больше трех, эти элементы будут показаны в следующей карусели.

Небольшой фрагмент ниже,

    $scope.addCampus = newCampus;   
    $scope.model = {};
    $scope.model.campuses = [];

    function init(){
        console.info("Initing");
        $log.log("loading");
        newCampus();
    }


    function newCampus() {
        $log.log("Adding a new campus");
        for(i=1;i<=3;i++){
        $scope.model.campuses.push({});
        }
    }

    init();
});

HTML:

<button ng-if = "model.campuses.length < 9" ng-click = "newCampus()">Add</button>
<div uib-carousel active = "activetTestimonial" interval = "myInterval" no-wrap = "noWrapSlides">
    <div ul-slide  ng-repeat = "quickbite in model.campuses track by $index" index = "$index" class = "widget-slide">
        <button ng-click = "showDeleteDialog($index, true)">delete {{$index}}</button>

        <form name = "formTestimonial[$index]" role = "form" novalidate show-validation>
            <div class = "editor-div-flex editor-url">
                <div class = "login-lable label-editor label-editor-logo editor-div-flex">
                    Name:
                </div>
                <div>
                    <input class = "editor-input widget-input" type = "text" ng-model = "quickbite.title" name = "title" required>
                </div>
            </div>

            <div class = "editor-div-flex editor-url">
                <div class = "login-lable label-editor label-editor-logo text-left">
                    <div>Description:</div>
                    <div class = "editor-limits">
                        ( 300 char )
                    </div>
                </div>
                <div>
                    <textarea class = "editor-textarea widget-input" ng-model = "quickbite.description" maxlength = "300" name = "description" required></textarea>
                </div>
            </div>
        </form>

    </div>
</div>
<div ng-if = "model.campuses.length > 3">
    <div class = "carousel-arrow widget-carousel-arrow-left">
        <button class = "demo-nav testimonial-arrow" ng-click = "prevQuickbiteSlide()">
            <img src = "/content/images/editor/left.png">
        </button>
    </div>
    <div class = "carousel-arrow  widget-carousel-arrow-right">
        <button class = "demo-nav testimonial-arrow" ng-click = "nextQuiclbiteSlide()">
            <img src = "/content/images/editor/right.png">
        </button>
    </div>
</div>

Итак, мне нужно показать 3 элемента в одной карусели. Если элементов массива больше 3, он должен отображаться в следующей карусели.

В конечном итоге первая карусель будет иметь массив [0], массив [1] и массив [2]. Вторая карусель будет иметь массив [3], массив [4] и массив [5].

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
139
1

Ответы 1

Я бы разбил массив campuses на несколько массивов по 3 элемента в нем, используя этот метод настраиваемого фрагмента:

var ceil = Math.ceil;

Object.defineProperty(Array.prototype, 'chunk', {value: function(n) {
   return Array(ceil(this.length/n)).fill().map((_,i) => this.slice(i*n,i*n+n));
}});

Просто вызовите этот метод в своем массиве, например: [0,1,2,3,4,5].chunk(3).

вам понадобится два ng-repeat. Один внешний повтор для каждой карусели и один внутренний для всех элементов в соответствующем массиве.

Adrian Baginski 27.05.2018 13:43

Можете ли вы опубликовать любой образец фрагмента в соответствии с моим фрагментом в коде. Новенькая пчела в угловой. Так что, пожалуйста, помогите мне с фрагментом, если возможно

SFDC 27.05.2018 13:46

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