私はユーザがテキストを入力する角度のフォームを作成しようとしています。は、それらの間にスリープ状態の2js関数を使用することはできません
その後、200ミリ秒間待機し、テキストlableが空白になります(「ユーザーが入力しています」が消えます)。
私は角度変更指示でそれをやっています。 私のコードは以下の通りです。
問題は何らかの理由で私が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'あなたのタイマーコールバックの内側に... –
わかりませんが、 '$ scope.text'変数への変更を有効にするには' $ scope。$ apply() 'を呼び出す必要があると思います。 – Titus