gpt4 book ai didi

angularjs - triggerHandler 导致错误 : [$rootScope:inprog] $apply already in progress error - AngularJS

转载 作者:行者123 更新时间:2023-12-04 22:04:03 28 4
gpt4 key购买 nike

我试图在按下一个键时触发一个按钮的点击。我正在使用 triggerHandler 函数执行此操作,但这会导致上述错误。我想我一定创建了某种循环引用/循环,但我看不到在哪里。

这是我的 HTML:

<button id="demoBtn1" hot-key-button hot-key="hotKeys.primaryTest" class="po-btn primary-btn" type="submit" ng-click="btnFunction()"></button>

这是我的 Controller :
.controller('BtnCtrl', function ($scope) {
$scope.checkKeyPress = function ($event, hotKeyObj) {
for(var key in hotKeyObj) {
if($event.keyCode == hotKeyObj[key].keyCode) {
var id = hotKeyObj[key].btnId;
hotKeyObj[key].funcTriggered(id);
}
}
}
$scope.clickFunction = function(id) {
var currentButton = angular.element(document.getElementById(id));
currentButton.triggerHandler("click");
}
$scope.btnFunction = function() {
console.log("clickFunction1 has been triggered");
}

$scope.hotKeys = {
'primaryTest': {
keyCode: 49,
keyShortcut: "1",
label: "Button",
btnId: 'demoBtn1',
funcTriggered: $scope.clickFunction
},
// more objects here
}
}
})

我的指令在这里:
.directive("hotKeyButton", function() {
return {
controller: 'BtnCtrl',
scope: {
hotKey: '='
},
transclude: true,
template: "<div class='key-shortcut'>{{hotKey.keyShortcut}}</div><div class='hotkey-label'>{{hotKey.label}}</div>"
};
})

这是一项正在进行的工作,所以我怀疑某些地方可能存在小错误,但我主要对从按键运行到触发 btnFunction 的逻辑感兴趣。该错误在 currentButton.triggerHandler("click") 行上触发。

谁能看到我做了什么?谢谢。

最佳答案

由于您在处理 $apply 时遇到问题 - 您可以将 triggerHandler 调用包装到 $timeout 包装器中 - 只是为了在另一个 $digest -cycle 中制作您需要的一切,如下所示:

$scope.clickFunction = function(id) {
var currentButton = angular.element(document.getElementById(id));
$timeout(function () {
currentButton.triggerHandler("click");
});
}
在此之后,一切都会正常工作。
  • 另外不要忘记将 $inject $timeout 服务添加到您的 BtnCtrl 中。
  • 另外,我不确定您是否需要为指令定义 controller 属性,但这不是主要情况。

  • 演示: http://plnkr.co/edit/vO8MKAQ4397uqqcAFN1D?p=preview

    关于angularjs - triggerHandler 导致错误 : [$rootScope:inprog] $apply already in progress error - AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149221/

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