Yii2 - Gridview воспроизводит следующую песню

В моем приложении Yii2 есть Gridview, который загружает аудиоплеер HTML5 для каждого аудиофайла mp3, хранящегося в папке. Каждая строка Gridview имеет собственный аудиоплеер. Это происходит потому, что путь к каждому mp3-файлу хранится в базе данных.

Вот:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    //'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        //'id',
        'nome',
        //'ficheiro',
        [
            'label' => '',
            'format' => 'raw',
            'value'=> function ($data){                      
                        return "<audio controls='controls'>
                        <source src='" . $data->ficheiro . "' type='audio/mp3' />
                        </audio>";
                        },
        ],
        //'dummy1',
        //'dummy2',
        // 'dummy3',
        // 'dummy4',
        // 'dummy5',

        ['class' => 'yii\grid\ActionColumn', 'template' => ''],
    ],
]); ?>

Есть ли способ активировать аудиопроигрыватель следующей строки в конце воспроизведения одного файла и начать воспроизведение следующего файла?

Я искал, но нашел только решение для воспроизведения следующего файла в том же списке воспроизведения файлов аудиоплеера. Не активировать следующий аудиоплеер со своим файлом.

Большое спасибо за возможное решение.


person André Castro    schedule 09.08.2015    source источник


Ответы (1)


Возможно, этот фрагмент может помочь вам:

$(function(){
    var audio = $('audio');
    audio.on('ended', function(){
        endedTrackIndex = audio.index(this);
        if((endedTrackIndex + 1) >= audio.size()) {
            return true;
        }

        nextTrack = audio.get(endedTrackIndex + 1);
        nextTrack.play();
    });
});

Прочтите справочник по аудиодомам о методах, свойствах и событиях, доступных для аудио элемент

person Tony    schedule 09.08.2015
comment
РЕШЕНО! Фрагмент указал мне правильный путь. Большое спасибо Тони :) - person André Castro; 09.08.2015