gpt4 book ai didi

javascript - angularjs 在事件内调用 Controller 的函数

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

我在 AngularJS 上遇到了一个问题,那就是我在 Controller 中编写了一个函数,我想在事件监听器中调用它,但我未定义!!

代码 Controller 如下所示:

inputApp.controller('my_controller', ['$scope', '$upload', '$http', '$filter', '$sce', '$timeout', 
function ($scope, $upload, $http, $filter, $sce, $timeout) {
$scope.changeBlock = function (block) {
// DO SOMETHING
};
$scope.$on('$locationChangeStart', function($scope, next, current){
// Calling the following function makes an error
$scope.changeBlock('Block_NAME');
$scope.preventDefault();
});
}]);

因此在 $scope.$on 内调用该函数会出错:

错误:$scope.changeBlock 不是一个函数!!

你能帮我吗,我如何在该监听器中调用我的函数?!

问候韦尔

最佳答案

您混淆了事件处理程序的签名,并错误地覆盖了您的 $scope 变量。事件处理程序的第一个参数是“event”而不是“$scope”:

这应该有效:

inputApp.controller('my_controller', ['$scope', '$upload', '$http', '$filter', '$sce', '$timeout', 
function ($scope, $upload, $http, $filter, $sce, $timeout) {
$scope.changeBlock = function (block) {
// DO SOMETHING
};

// before:
// $scope.$on('$locationChangeStart', function($scope, next, current){
// now:
$scope.$on('$locationChangeStart', function(event, next, current){
// Calling the following function makes an error
$scope.changeBlock('Block_NAME');
$scope.preventDefault();
});
}]);

关于javascript - angularjs 在事件内调用 Controller 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304113/

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