我使用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