@mrdunner

Снова AngularJS или насколько автор тупит?

Всем доброго вторника.
Вопрос такой.
Кусок кода:
$scope.play = function(url) {
    jQuery("#player").attr('src',url);
    document.getElementById('player').play();
    $rootScope.isaudioplayed = '1';
  }

Кусок кода, интепретирующий функцию
<a ng-click="play('{{audio.url}}');">
        <p><button type="button" class="btn btn-warning"><i class="fa fa-play"></i></button><p class="audio_author">{{ audio.author }}</p> - <p class="audio_name">{{ audio.name }}</p></p>
    </a>


Но в alert выводится {{audio.url}} , а не сама ссылка..
Что можно в данном случае сделать, подскажите, пожалуйста?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
dluhhbiu
@dluhhbiu
<a ng-click="play(audio.url);">
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@bromzh
Drugs-driven development
Нужно научиться пользоваться ангуляром и не писать подобный г-нокод. Jquery не должен быть в контроллере. Потому что контроллер ничего не должен знать о DOM, ведь он выполняется когда реальный DOM ещё не построен (работает только с виртуальным). Если нужно впилить jquery-плагин, то нужно создать директиву. В директиве в методе postLink (он же link) и нужно работать с DOM. Причём нужно обернуть всё в $(function () { ... }), чтобы код выполнился только по окончанию построения DOM. И в конце вызвать scope.$digest().
angular.module('foo').directive('player', function () {
  return {
    restrict: 'E',
    link: function (scope, element) {
      $(function () {
        твой код
      }
      scope.$digest();
    }
  };
});

Ну и раз уж ты пользуешься жквери, то пиши на нём всё, зачем document.getElementById ?
Ответ написан
Комментировать
RubaXa
@RubaXa
> Снова AngularJS
> ng-click="play('{{audio.url}}');"

64px-Not-again-picard2.jpg

Читайте документацию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы