gpt4 book ai didi

javascript - 停止 AngularJS 1 中的定时函数

转载 作者:行者123 更新时间:2023-12-02 13:47:18 27 4
gpt4 key购买 nike

我在学习 Angular JS 1 时正在进行一个小测试。我有一些文本区域,当用户进入和退出它们时,它们通过 Angular 函数显示一些文本。输入函数等待 3 秒,退出函数等待 5 秒。到目前为止,这是有效的。

任务的下一部分是,如果用户没有等待超时时间,则取消将文本绑定(bind)到文本区域的功能。我对此感到困惑,但我认为我需要使用 Promise。

var myApp = angular.module('myApp', []);

function checkTimeout() {
console.log("Timeout is working...");
}

myApp.filter('rawHtml', ['$sce', function($sce){
return function(val) {
return $sce.trustAsHtml(val);
};
}])

myApp.controller("MyCtrl", function($scope, $timeout){

$timeout(checkTimeout, 3000);

$scope.data = [{
"id": 1,
"act": ""
}, {
"id": 2,
"act": ""
}, {
"id": 3,
"act": ""
}, {
"id": 4,
"act": ""
}, {
"id": 5,
"act": ""
}, {
"id": 6,
"act": ""
}, {
"id": 7,
"act": ""
}, {
"id": 8,
"act": ""
}, {
"id": 9,
"act": ""
}];

$scope.enter1 = function(num) {
$timeout (function(){num.act = " - enter";}, 3000 );
}

$scope.exit1 = function(num) {
$timeout (function(){num.act = " - exit";}, 5000 );
}


})

HTML:

<body ng-app="myApp">
<div ng-controller="MyCtrl" style="width:100%;margin:10px;">
<p>How can I stop the functions enter1 and exit1 from binding text to the textarea if the user does not wait the 3 seconds (enter1) and 5 seconds (exit1) for them to execute?</p>
<div style="float:right; width:49%;">
<div ng-repeat="num in data" style="margin:3px;">
<textarea ng-focus="enter1(num)" ng-blur="exit1(num)">{{ num.id }}{{ num.act }}</textarea>
</div>
</div>
</div>
</body>

这是 fiddle :https://jsfiddle.net/mediaguru/q3qt5frk/

最佳答案

$timeout构造函数返回一个值,可用于访问计时器。

var myTimer = $timeout(checkTimeout, 3000);

//Kill it
$timeout.cancel (myTimer);

关于javascript - 停止 AngularJS 1 中的定时函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41289709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com