Javascript 未定义向函数throw添加null条件
我是Angular和JS的新手,我有一个函数可以加载一个简单的选择,如下所示: 角度CtrlJavascript 未定义向函数throw添加null条件,javascript,angularjs,Javascript,Angularjs,我是Angular和JS的新手,我有一个函数可以加载一个简单的选择,如下所示: 角度Ctrl function detalleRegistrosCtrl($scope, apiService, notificationService, $rootScope, $location, $stateParams, $http, $state) { Dropzone.autoDiscover = false; $scope.catalogoPadre = $statePa
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);
问题是当我尝试将if条件添加到cargarCatalogo()函数中时。当我这样做时:
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
有人能给我解释一下怎么了吗?我只是给函数添加了一个条件。这很简单,因为
cargarCatalogo()
是在if
语句中定义的
如果,则必须在之外定义它
然后在使用它时,将函数调用包装在if
语句中
如果在If
中定义它,则在运行代码并执行If语句之前,永远不会定义它。因此它将抛出错误。在调用cargarCatalogo()
函数时添加条件,而不是在函数声明中包装条件。在您的detalleRegistrosCtrl
上,已在调用该函数
Dropzone.autoDiscover = false;
$scope.catalogoPadre = $stateParams.catalogopadre;
if ($scope.catalogoPadre != null) {
cargarCatalogo();
}
实际上cargarCatalogo()代码>调用的方法不在我的if语句中,函数cargarCatalogo(){
在if内部,我没有发现任何问题,答案是正确的,因为您的函数定义本身在if
内部,尚未执行,但您在此之前就调用了它。在第一种情况下,当您的函数在if
外部时,您的控制器知道存在具有该名称的方法。