添加null条件函数throw未定义

时间:2017-07-04 21:59:08

标签: javascript angularjs

我是Angular和JS的新手,我有一个加载一个简单选择的函数:

Angular Ctrl

function detalleRegistrosCtrl($scope, apiService, notificationService, $rootScope, $location, $stateParams, $http, $state) {
        Dropzone.autoDiscover = false;
        $scope.catalogoPadre = $stateParams.catalogopadre;

        cargarCatalogo();


    $scope.regresar = function () {
        $state.go("root.catalogosgenericos");
    }


    function errorCatalogo(res) {
        bootbox.alert("Error al cargar el catalogo" + res.data);
    }

     function cargarCatalogo() {
         apiService.get("../../api/Catalogo/GetCatalogoPadre/" + $scope.Catalogo + "/", null,
            function (res) {

                $scope.Catalogos = res.data;
                $scope.selectedID = selected.ID;
            }, errorCatalogo);

问题是当我尝试在cargarCatalogo()函数中添加if条件时。当我这样做时:

    if ($scope.catalogoPadre != null) {

     function cargarCatalogo() {
         apiService.get("../../api/Catalogo/GetCatalogoPadre/" + $scope.Catalogo + "/", null,
            function (res) {
                $scope.Catalogos = res.data;
                $scope.selectedID = selected.ID;
            }, errorCatalogo);
     }

我进入了Chrome控制台:

  

错误:cargarCatalogo未定义

有人可以解释我有什么问题吗?我只是为一个函数添加一个条件。

2 个答案:

答案 0 :(得分:0)

这很简单,因为在cargarCatalogo()语句中定义了if

您必须在if之外定义它。

然后在使用它时将函数调用包装在if语句中。

如果在if中定义它,它将永远不会被定义,直到您运行代码并执行if语句。因此它会引发错误。

答案 1 :(得分:0)

不是在函数声明上包装条件,而是在调用cargarCatalogo()函数时添加条件。在detalleRegistrosCtrl已经调用该功能

Dropzone.autoDiscover = false;
$scope.catalogoPadre = $stateParams.catalogopadre;
if ($scope.catalogoPadre != null) {
    cargarCatalogo();
}