无法使用angular.js从另一个函数调用一个函数

时间:2015-10-10 09:46:25

标签: javascript angularjs

我试图使用angular.js从另一个函数调用一个函数,但它给出了以下错误。

TypeError: $scope.addwithDept is not a function

我正在解释下面的代码。

  

Rolecontroller.js:

var dashboard = angular.module('Channabasavashwara');
dashboard.controller('roleController', function ($scope, $http, $state) {
    $scope.buttonName = "Add";
    $scope.addUserRoleData = function () {
        if ($('#addProfileData')[0].defaultValue == 'Add') {
            if ($scope.showDept) {
                $scope.addwithDept();
            } else {
                $scope.addwithOutDept();
            }
        }
    }
    $scope.addWithDept = function () {
        console.log('hii');
    }
})

错误来自if语句中的函数。请帮我解决此错误。

1 个答案:

答案 0 :(得分:1)

将函数scope.addWithDept移动到调用它的函数上方。

定义为$scope.functionName = function() {...时的函数是函数表达式。该函数尚未定义,因此调用它会导致fn is not a function错误。此函数与函数声明不同。函数声明被提升到顶部,而函数表达式则不是。

var dashboard = angular.module('Channabasavashwara');
dashboard.controller('roleController', function ($scope, $http, $state) {

    $scope.buttonName = "Add";

    // Moved this function here
    $scope.addWithDept = function () {
        console.log('hii');
    };

    $scope.addUserRoleData = function () {
        if ($('#addProfileData')[0].defaultValue == 'Add') {
            if ($scope.showDept) {
                $scope.addwithDept();
            } else {
                $scope.addwithOutDept();
            }
        }
    };
});