gpt4 book ai didi

javascript - 如何防止 Angular 方法多次触发?

转载 作者:行者123 更新时间:2023-11-28 18:35:03 25 4
gpt4 key购买 nike

我有一个多次触发的 Angular 函数,我很困惑为什么它会这样做。在后端,我有一个 console.log() 语句,每次点击端点时都会记录该语句。该语句被触发 4 次。 instagramService.tapInsta();应该只被调用一次。有人可以告诉我为什么以及如何发生这种情况吗?

<小时/>
'use strict';

console.log("OUTSIDE alloyController");

angular.module("mainModule")
.controller('alloyController', function ($scope, instagramService) {

console.log("INSIDE alloyController");

$scope.windowInfoWithToken = instagramService.getWindowInfo();

instagramService.tapInsta($scope.windowInfoWithToken, function (response) {

$scope.instagramData = response.data;

if (!response.data.access_token == undefined) {

$scope.instagramDataWithToken = response.data.access_token;

} else {

$scope.hideThisDiv = true;
}

console.info(response.data);

});

});
<小时/>

在回复评论时,我在服务中完成了实际的 API 调用:

'use strict';

console.log("OUTSIDE dataService");

angular.module("mainModule")
.service('instagramService', function ($http) {

console.log("INSIDE dataService");

this.tapInsta = function (access_token, callback) {

$http({
method: 'POST',
url: '/ig',
data: {
token: access_token
}
})

.then(callback);
}

this.tapInstaExtended = function (access_token, instaQuery, callback) {

$http({
method: 'POST',
url: '/instaInputQuery',
data: {
token: access_token,
query: instaQuery
}
})

.then(callback);
}

this.getHandleAuth = function (callback) {


$http({
method: 'GET',
url: '/handleauth',
data: {
name: "LTQ"
}
})

.then(callback);

}

this.getWindowInfo = function () {

var windowLocation = window.location.href;

if (windowLocation.indexOf("losethequit") != -1) {
var windowLocationWithToken = windowLocation.replace("https://losethequit.herokuapp.com/views/werkspayce.html?code=", "");
} else {
var windowLocationWithToken = windowLocation.replace("http://localhost:5000/views/werkspayce.html?code=", "");
}

return windowLocationWithToken;

};

});
<小时/>

最佳答案

在函数体中插入一个debugger;,打开(在chrome中推荐)“开发者工具”(简单地检查一个元素)并检查“调用堆栈”,这样你就可以看到函数是什么调用它。

关于javascript - 如何防止 Angular 方法多次触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37257264/

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