javascript - AngularJS 中的另一个函数无法识别该函数

标签 javascript angularjs

在使用 Controller 加载部分 Html 期间,我的名为 $scope.actionViewVisitors() 的函数被识别并运行,没有错误。但是每当我在同一 Controller 上的另一个函数中使用它时,它都会给我一个错误: 类型错误:$scope.actionViewVisitors 不是函数。请参阅下面我的代码:

angular.module("Visitor.controller", [])

// ============== Controllers
.controller("viewVisitorController", function ($scope, $rootScope, $http, viewVisitorService, viewAccountService, DTOptionsBuilder) {
    $scope.visitorList = null;

    $scope.viewAccountDetail = null;
    $scope.avatar = null;

    $scope.visitorDetail = null;

    $scope.visitorBtn = "Create";

    $scope.actionViewAccount = function () {
        $scope.actionViewAccount = viewAccountService.serviceViewAccount()
        .then(function (response) {
            $scope.viewAccountDetail = response.data.account;
            $scope.avatar = "../../avatars/" + response.data.account.AccountId + ".jpg";
        })
    }

    $scope.dtOptions = DTOptionsBuilder.newOptions()
        .withDisplayLength(10)
        .withOption('bLengthChange', false);

    // THIS ONE IS NOT RECOGNIZED    
    $scope.actionViewVisitors = function () {
        $scope.actionViewVisitors = viewVisitorService.serviceViewVisitors()
            .then(function (response) {
            debugger;
                $scope.visitorList = response.data.visitorList;
            });
    }

    // I DON'T GET ANY ERROR HERE
    $scope.actionViewVisitors();
    $scope.actionViewAccount();

    $scope.createVisitor = function () {
        $scope.statusMessage = null;
        if ($scope.visitorBtn == "Create") {
            $scope.createVisitor = viewVisitorService.serviceCreateVisitor($scope.visitorDetail)
                .then(function (response) {
                    if (response.data.response == '1') {
                        bootbox.alert({
                            message: "Successfully created a new visitor.",
                            size: 'small',
                            classname: 'bb-alternate-modal'
                        });
                    } else if (response.data.response == '0') {
                        bootbox.alert({
                            message: "Failed in creting visitor.",
                            size: 'small',
                            classname: 'bb-alternate-modal'
                        });
                    }
                });
            debugger;
            $scope.visitorDetail = undefined;
            // I GET THE ERROR WHEN I CALL THIS METHOD
            $scope.actionViewVisitors();
        }
    }
})

// ============== Factories
.factory("viewVisitorService", ["$http", function ($http) {
    var fac = {};

    fac.serviceViewVisitors = function () {
        return $http({
            url: '/Visitor/ViewVisitors',
            method: 'get'
        });
    }

    fac.serviceCreateVisitor = function(visitor) {
        return $http({
            url: '/Visitor/CreateVisitor',
            data: { visitor: visitor },
            method: 'post'
        });
    }

    return fac;
}])

最佳答案

您在下面的行中使用 Promise 覆盖该函数,因此错误是正确的

$scope.actionViewVisitors = function () {
    $scope.actionViewVisitors = viewVisitorService.serviceViewVisitors() 
        .then(function (response) {
           $scope.visitorList = response.data.visitorList;
        });
}

删除$scope.actionViewVisitors =

$scope.actionViewVisitors = function () {
    viewVisitorService.serviceViewVisitors() 
        .then(function (response) {
           $scope.visitorList = response.data.visitorList;
        });
}

关于javascript - AngularJS 中的另一个函数无法识别该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48317567/

相关文章:

javascript - 如何轻松创建一个 javascript 2D 字典,其中键顺序无关紧要?

javascript - Angular 模块依赖项的命名约定

javascript - AngularJS:将数据发布到外部 REST API

Javascript,我可以访问另一个子函数吗

javascript - 如何在我的网站中加载组件及其类

javascript - 如何创建一个独立的 DOM 元素?一个不从 parent 那里继承 css 等

javascript - Javascript 类型与经典 ASP 不匹配

AngularJS - 根据 ng-repeat 中的项目数量显示/隐藏

javascript - 如何在单元测试中取消引导 Angular JS 应用程序?

angularjs - 如何在另一个指令中调用一个指令