我对AngularJS有一个问题,就是我在我的控制器中编写了一个函数,我想在事件列表器中调用它,但是我得到了不确定!!
代码控制器如下所示:
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不是函数!!
你能帮助我吗,我如何在该列表中调用我的功能?!
此致 瓦埃勒
答案 0 :(得分:1)
你混淆了事件处理程序的签名,并错误地覆盖了你的$ 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();
});
}]);
答案 1 :(得分:0)
将第一个参数名称$scope
从$scope.$on('$locationChangeStart', function($scope, next, current){
更改为其他