MDa*_*alt 4 onclick angularjs jquery-triggerhandler
我按下按键时尝试触发按钮的单击.我正在使用该triggerHandler函数执行此操作,但这会导致上述错误.我想我必须创建某种循环引用/循环,但我看不到哪里.
这是我的HTML:
<button id="demoBtn1" hot-key-button hot-key="hotKeys.primaryTest" class="po-btn primary-btn" type="submit" ng-click="btnFunction()"></button>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
.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
}
}
})
Run Code Online (Sandbox Code Playgroud)
我的指示在这里:
.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>"
};
})
Run Code Online (Sandbox Code Playgroud)
这是一项正在进行中的工作,所以我怀疑在某些地方可能会出现小错误,但我主要感兴趣的是从按键到btnFunction触发的逻辑运行.错误在线上触发currentButton.triggerHandler("click").
谁能看到我做过的事情?谢谢.
aba*_*hka 14
由于您正在处理问题$apply- 您可以将您的triggerHandler调用$timeout包装到包装器中 - 只是为了在另一个$digest循环中创建您需要的所有内容,如下所示:
$scope.clickFunction = function(id) {
var currentButton = angular.element(document.getElementById(id));
$timeout(function () {
currentButton.triggerHandler("click");
});
}
Run Code Online (Sandbox Code Playgroud)
在此之后一切都会好起来的.
$inject $timeout服务到你的BtnCtrl.controller为您的指令定义属性,但这不是主要情况.| 归档时间: |
|
| 查看次数: |
9050 次 |
| 最近记录: |