我是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未定义
有人可以解释我有什么问题吗?我只是为一个函数添加一个条件。
答案 0 :(得分:0)
这很简单,因为在cargarCatalogo()
语句中定义了if
。
您必须在if
之外定义它。
然后在使用它时将函数调用包装在if
语句中。
如果在if
中定义它,它将永远不会被定义,直到您运行代码并执行if语句。因此它会引发错误。
答案 1 :(得分:0)
不是在函数声明上包装条件,而是在调用cargarCatalogo()
函数时添加条件。在detalleRegistrosCtrl
已经调用该功能
Dropzone.autoDiscover = false;
$scope.catalogoPadre = $stateParams.catalogopadre;
if ($scope.catalogoPadre != null) {
cargarCatalogo();
}