Я хотел бы динамически изменять текст в теге <div>

0

Как я могу изменить текст в <div> динамически в соответствии с аудио? У меня есть текст аудиофайла и есть время, когда этот текст поступит в аудио. В определенный момент текст должен измениться.

Я пытаюсь сделать это со следующим кодом, но текст не отображается в <div>.

var refreshIntervalId = setInterval(function(){
  media.getCurrentPosition(function(position){
    if(position > 0){
      // position is current position of audio which is playing
      if(position < 2.40) {
        console.log("Lets sit comfortably easily");
        $scope.profile.text = "Lets sit comfortably easily";
      } else {
        $scope.profile.text = "Lets close our eyes";
      }
    }
  }, function(error){
    console.log(error);
  })
}, 1000);

Консоль печатает, но текст не отображается в <div>.

Пожалуйста, поделитесь своими идеями о том, почему это происходит.

  • 0
    пожалуйста, добавьте свой HTML
  • 0
    Вы должны добавить тег angularjs к своему вопросу
Теги:
ionic-framework
cordova

3 ответа

2

Просто используйте $scope.$apply().

var refreshIntervalId = setInterval(function(){
media.getCurrentPosition(function(position){
if(position > 0){
  // position is current position of audio which is playing
  if(position < 2.40) {
    console.log("Lets sit comfortably easily");
    $scope.profile.text = "Lets sit comfortably easily";
  } else {
    $scope.profile.text = "Lets close our eyes";
  }
  $scope.apply();
}
}, function(error){
console.log(error);
})
}, 1000);

Благодарю.

  • 0
    Используйте $interval . Он позаботится о $apply внутренне
  • 0
    вызвать $ scope.apply (); из таймера это не лучшая частица, для удобства AngularJS предоставляет $ timeout и $ interval, которые подобны setTimeout и setInterval.
Показать ещё 1 комментарий
0

не используйте setinterval, вы должны использовать угловую функцию $ interval.

https://docs.angularjs.org/api/ng/service/ $ interval

setinterval находится вне углового контекста, тогда для каждого таймера тик ваш интерфейс не обновляется.

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

  • 0
    Добавление причины поможет OP понять, почему ... потому что он будет внутренне вызывать $apply() а setInterval () находится вне углового контекста.
  • 0
    Вы не вызываете apply () для каждого таймера, я не вижу его в вашем коде.
Показать ещё 5 комментариев
-3

$ ("# myDivId"). text ("Мой новый текст.");

  • 0
    Нет jQuery в стеке OP использует
  • 0
    Почему jQuery, а не AngularJS?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню