2014-07-09 3 views
1

Я занят веб-приложением для музыкального магазина с JAVA для внутреннего и углового JS/HTML5/CSS3 для интерфейсного. ammm, а для воспроизведения музыки я использовал Sound Manager Java Script Library, все отлично работает со статическим 360-плеером, но когда я пытаюсь использовать звуковой менеджер в директиве ng-repeat, это не работает, пожалуйста, какое-нибудь предложение? и звукорежиссер работает с живыми элементами dom, создаваемыми угловым js "ng-repeat"?Soundmanager 2 не работает с угловой директивой js «ng-repeat»

Sound Manager Иниц

   // init Sound Manager 

      soundManager.setup({ 
       // path to directory containing SM2 SWF 
       url: 'player/' 
      }); 

      threeSixtyPlayer.config.scaleFont = (navigator.userAgent.match(/msie/i)?false:true); 
      threeSixtyPlayer.config.showHMSTime = true; 

      // enable some spectrum stuffs 

      threeSixtyPlayer.config.useWaveformData = true; 
      threeSixtyPlayer.config.useEQData = true; 

      // enable this in SM2 as well, as needed 

      if (threeSixtyPlayer.config.useWaveformData) { 
       soundManager.flash9Options.useWaveformData = true; 
      } 
      if (threeSixtyPlayer.config.useEQData) { 
       soundManager.flash9Options.useEQData = true; 
      } 
      if (threeSixtyPlayer.config.usePeakData) { 
       soundManager.flash9Options.usePeakData = true; 
      } 

      if (threeSixtyPlayer.config.useWaveformData || threeSixtyPlayer.flash9Options.useEQData || threeSixtyPlayer.flash9Options.usePeakData) { 
       // even if HTML5 supports MP3, prefer flash so the visualization features can be used. 
       soundManager.preferFlash = true; 
      } 

Угловое нг-повтор

<div class="mod-contents"> 
    <div class="questions-block" ng-repeat="question in filtered = (questionList | filter:searchKey | orderBy : predicate : reverse)"> 
     <div class="col-xs-12 col-sm-4 col-md-3 pull-right"> 
      <div class="thumbnail block-black "> 
       <h3 class="block-title rtl-element">{{ question.description }}<span class="text-muted"> ({{ question.cat_code }}) </span></h3>  
       <div class="ui360 ui360-vis player-wrapper-md player-md "><a href="pac_test.mp3"></a></div>     
      </div> 
     </div>   
    </div> 
</div> 
+1

SoundManager несет ответственность только за обработку существующих элементов DOM. Если вы добавляете новые элементы DOM после запуска SoundManager, это становится вашей ответственностью. – idbehold

ответ

-1

я с той же проблемой. Кажется, я знаю, почему это происходит. Я верю в javascript для звукового менеджера, который ищет экземпляры звукового менеджера и не находит. Раздел ng-repeat не является статическим; он может измениться. Поэтому, когда вы загружаете загрузку страницы и диспетчера звука, секция ng-repeat еще не содержит никаких элементов. Поэтому звуковой менеджер решает не добавлять обработчик событий для проверки, если вы нажмете на кнопку.

Я отредактировал mp3-player-button.js, а в секции init я прокомментировал, где он сказал «if (foundItems> 0)», чтобы он всегда добавлял обработчик события звукового менеджера.

Это решение немного взлохло - так что, возможно, вы можете реализовать что-то умнее. Но это работает для меня. Надеюсь, поможет!

+0

Это не ошибка soundmanager! он сделал для статического воспроизведения! вы можете использовать другого игрока! Я знаю, что плеер soundmanager 360 такой милый! во всяком случае, я работаю над звуковым менеджером, чтобы сделать его динамичным :) – bizzr3