Как я могу изменить текст в <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>
.
Пожалуйста, поделитесь своими идеями о том, почему это происходит.
Просто используйте $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);
Благодарю.
$interval
. Он позаботится о $apply
внутренне
не используйте setinterval, вы должны использовать угловую функцию $ interval.
https://docs.angularjs.org/api/ng/service/ $ interval
setinterval находится вне углового контекста, тогда для каждого таймера тик ваш интерфейс не обновляется.
$ interval будет внутренне вызывать функцию $ apply для каждого таймера, автоматически обновляя ваше представление.
$apply()
а setInterval () находится вне углового контекста.
$ ("# myDivId"). text ("Мой новый текст.");