我使用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);
});
})
我猜这是一个计时问题。在设置secondsToAnswer之前,页面表达式{{...}}将得到评估。尝试使secondsToAnswer函数返回您感兴趣的值。 – Scott 2014-10-07 22:31:00
@Scott谢谢,我已经尝试过了,但它是别的。 – 2014-10-07 22:52:42
由于所有打开的尖括号在git上被更改为<,所以很难阅读它们的示例代码。但是我想知道这个问题是不是你的控制器作用域设置了secondsToAnswer变量,并且指定了秒的指令作用域没有连接。 – 2014-10-07 23:44:37