我想創建一個角度表單,其中用戶鍵入文本,而他在下面的文本標籤中說「用戶正在輸入...」。不能使用2個js函數和它們之間的睡眠
然後它等待200毫秒和文本標籤變空白(「用戶正在鍵入」消失)。
我正在使用角度ng-change指令。 我的代碼如下。
問題在於,由於某些原因,我爲運行2種睡眠方法編寫的幫助方法存在問題。 出於某種原因,文本「用戶正在輸入...」在短時間睡眠後不會消失。
這是爲什麼?
感謝
angular.module('myApp', [])
.controller('myCtrl', ['$scope', function($scope) {
$scope.count = 0;
$scope.myFunc = function() {
runTwoFunctionWithSleepBetweenThem(function(){$scope.text='user is typing...';},function(){$scope.text='';},200);
};
var runTwoFunctionWithSleepBetweenThem = function(foo1,foo2, time) {
var sleep =function (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
foo1();
sleep(time).then(() => {
foo2();
});
}
}]);
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body ng-app="myApp">
<div ng-controller="myCtrl">
<p>Write something in the input field:</p>
<input type="text" ng-change="myFunc()" ng-model="myValue" />
<p>{{text}}</p>
</div>
</body>
</html>
這似乎是關係到你的代碼被淘汰的執行超時時間的角度範圍,儘量使用'你的計時器回調在$範圍。$ apply' ... – 2016-07-06 20:31:22
我不確定,但我想你需要調用'$ scope。$ apply()'以使'$ scope.text'變量的變化生效。 – Titus