在我的AngularJS控制器中,我有一个接收参数的事件处理程序。参数的方法名称为string,我需要执行它。如何在控制器中调用该方法?
我已经看过这个question & answer,但它在控制器上对我不起作用。这是我的代码
事件由指令创建,该指令是确认对话框。用户单击“是”时将触发事件。
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
变量的函数在控制器中定义为方法,并且在加载模态之前设置yesNoData
的值。在模式中单击是,处理事件
function deleteRequirement() {
console.log("In delete requirement")
}
答案 0 :(得分:1)
使用$scope[arg.yesNoData.yesMethod]()
代替window[arg.yesNoData.yesMethod]()
,因为它是$scope
对象内的方法,而不是window
对象