gpt4 book ai didi

javascript - 当我的名称为字符串时如何执行 Angular Controller 方法

转载 作者:行者123 更新时间:2023-12-03 06:38:11 25 4
gpt4 key购买 nike

在我的 AngularJS Controller 中,我有一个接收参数的事件处理程序。该参数有一个字符串形式的方法名称,我需要执行该方法。如何调用 Controller 中的方法?

我看过这个question & answer但它在 Controller 上对我不起作用。这是我的代码

该事件是由确认对话框指令创建的。当用户单击"is"时触发事件。

app.directive('yesNoModal', function() {
return {
restrict: 'E',
scope: {
yesNoData: '=',
},
controller: function($scope) {
$scope.handleYes = function() {
$scope.$emit('clickedYes', { "yesNoData": $scope.yesNoData });
}
$scope.handleNo = function() {
$scope.$emit('clickedNo');
}
},
templateUrl: 'partials/templates/yes-no-modal.html',
}
})

事件处理程序

$scope.$on('clickedYes', function(event, arg) {
console.log(arg)
window[arg.yesNoData.yesMethod]()
});
在我的例子中,

window[arg.yesNoData.yesMethod] 返回undefined。我也尝试过使用 $window 但我得到了相同的未定义。名称为 arg.yesNoData.yesMethod 变量的函数在 Controller 中定义为方法,并且在加载模式之前设置 yesNoData 的值。在模式中单击"is"后,事件将被处理

function deleteRequirement() {
console.log("In delete requirement")
}

最佳答案

使用$scope[arg.yesNoData.yesMethod]()而不是window[arg.yesNoData.yesMethod]()因为它是 $scope 中的一个方法对象而不是 window对象

关于javascript - 当我的名称为字符串时如何执行 Angular Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38094158/

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