Я использую angular-timer.Angularjs деление по пробелу не удается
Это работает:
{{ (seconds/10) * 100 }}
Но это один не делает:
{{ (seconds/secondsToAnswer) * 100 }
(это имеет значение NaN)
Однако, я поставил secondsToAnswer
10 в контроллере: $scope.secondsToAnswer = 10;
Это происходит и вне директивы.
Полный код:
HTML
<timer interval="1000">
<div class="progress">
<div class="progress-bar progress-bar-info progress-bar-striped"
role="progressbar"
aria-valuenow="20"
aria-valuemin="0"
aria-valuemax="100"
style="width: {{ (seconds/secondsToAnswer) * 100 }}%">
</div>
</div>
</timer>
JS
'use strict';
vocabApp.controller('PracticeController', function ($scope) {
$scope.expressions = [
{ expression:'cat', meaning:'macska' },
{ expression:'dog', meaning:'kutya' },
{ expression:'whale', meaning:'bálna' }
];
//$scope.timerRunning = true;
$scope.startTimer = function() {
$scope.secondsToAnswer = 10;
$scope.$broadcast('timer-start');
$scope.timerRunning = true;
};
$scope.stopTimer = function() {
$scope.$broadcast('timer-stop');
$scope.timerRunning = false;
};
$scope.$on('timer-stopped', function (event, args) {
console.log('timer-stopped args = ', args);
});
})
Я предполагаю, что это вопрос времени. Выражение страницы {{...}} оценивается до того, как уходит секунда. Попробуйте сделать secondToAnswer функцией, которая возвращает интересующее вас значение. – Scott
@Scott Спасибо, я пробовал, но это что-то еще. –
Трудно прочитать их пример кода из-за того, что все угловые скобки изменены на < на git. Но мне интересно, не проблема в том, что область вашего контроллера, которая устанавливает переменную secondsToAnswer и область действия директивы, которая устанавливает секунды, не подключена. –