Angularjs 工厂服务总是未定义的

Angularjs 工厂服务总是未定义的,angularjs,dependency-injection,Angularjs,Dependency Injection,我花了几个小时试图调试它,但没有真正的突破。My console.logs正确输出加载顺序。 -应用程序 -工厂 -控制器 我正在注释我的依赖项(尽管我现在没有缩小) 这里有什么我遗漏的明显的错误吗 错误 应用程序 (function () { 'use strict'; console.log("running app"); var app = angular.module('InventoryProductApp', []).config(function ($logProvider) {

我花了几个小时试图调试它,但没有真正的突破。My console.logs正确输出加载顺序。
-应用程序
-工厂
-控制器
我正在注释我的依赖项(尽管我现在没有缩小)

这里有什么我遗漏的明显的错误吗

错误

应用程序

(function () {
'use strict';
console.log("running app");
var app = angular.module('InventoryProductApp', []).config(function ($logProvider) {
    $logProvider.debugEnabled(true);
});
angular.element(document).ready(function () {
    var app = document.getElementById('InventoryProductApp');
    angular.bootstrap(angular.element(app), ['InventoryProductApp']);
});
})();  
(function () {
'use strict';
angular.module('InventoryProductApp').controller("LocationsController", ['$scope', '$log', 'LocationsFactory'
, function ($scope, $http, $log, LocationsFactory) {
    console.log("running controller");
    $scope.locations = null;
    $scope.loading = false;

    //private methods -------------------------------------------------------------------------------------------------------------------------------------------------------------

    var fetchLocationData = function (inventoryId) {
        $scope.loading = true;
        console.log(LocationsFactory);
        var promise = LocationsFactory.getLocationData(inventoryId);

        promise.then(function (data) {
            $scope.loading = false;

            if (data.success) {
                $scope.locations = data.locations;
            }
            else
            {
                $log.error('There was an error getting location data');
            }

        }, function (data) {
            $scope.loading = false;
            $log.error('There was an error getting location data');
        });
    }

    //end private methods ---------------------------------------------------------------------------------------------------------------------------------------------------------


    //public methods --------------------------------------------------------------------------------------------------------------------------------------------------------------

    var init = function (inventoryId) {
        console.log('inventoryId', inventoryId);
        fetchLocationData(inventoryId);
    }
    //end public methods ----------------------------------------------------------------------------------------------------------------------------------------------------------

    init(inventoryId); // inventoryId is found in the partialView _inventoryLocationDistribution
}]);
})();  
(function () {
'use strict';

angular.module('InventoryProductApp').factory('LocationsFactory', ['$http', '$q', '$log', function ($http, $q, $log) {
    console.log("running factory");
    return {
        getLocationData: function (inventoryId) {
            var def = $q.defer();

            $http.get('/butthead', {
                params: {
                    inventoryId: inventoryId
                }
            }).then(function (response) {
                def.resolve({
                    success: true,
                    locations: data.locations
                });
            }, function (response) {
                $log.error('failed to fetch data', response);
                def.resolve({
                    success: false,
                    redirect: response.redirect
                });
            });

            return def.promise;
        }
    }
}]);
})();  
<script src="~/theme/modern/assets/global/plugins/angularjs/angular.min.js"></script>
<script src="~/App/Inventory/Product/ProductApp.js"></script>
<script src="~/App/Inventory/Product/LocationsFactory.js"></script>
<script src="~/App/Inventory/Product/LocationsController.js"></script>
控制器

(function () {
'use strict';
console.log("running app");
var app = angular.module('InventoryProductApp', []).config(function ($logProvider) {
    $logProvider.debugEnabled(true);
});
angular.element(document).ready(function () {
    var app = document.getElementById('InventoryProductApp');
    angular.bootstrap(angular.element(app), ['InventoryProductApp']);
});
})();  
(function () {
'use strict';
angular.module('InventoryProductApp').controller("LocationsController", ['$scope', '$log', 'LocationsFactory'
, function ($scope, $http, $log, LocationsFactory) {
    console.log("running controller");
    $scope.locations = null;
    $scope.loading = false;

    //private methods -------------------------------------------------------------------------------------------------------------------------------------------------------------

    var fetchLocationData = function (inventoryId) {
        $scope.loading = true;
        console.log(LocationsFactory);
        var promise = LocationsFactory.getLocationData(inventoryId);

        promise.then(function (data) {
            $scope.loading = false;

            if (data.success) {
                $scope.locations = data.locations;
            }
            else
            {
                $log.error('There was an error getting location data');
            }

        }, function (data) {
            $scope.loading = false;
            $log.error('There was an error getting location data');
        });
    }

    //end private methods ---------------------------------------------------------------------------------------------------------------------------------------------------------


    //public methods --------------------------------------------------------------------------------------------------------------------------------------------------------------

    var init = function (inventoryId) {
        console.log('inventoryId', inventoryId);
        fetchLocationData(inventoryId);
    }
    //end public methods ----------------------------------------------------------------------------------------------------------------------------------------------------------

    init(inventoryId); // inventoryId is found in the partialView _inventoryLocationDistribution
}]);
})();  
(function () {
'use strict';

angular.module('InventoryProductApp').factory('LocationsFactory', ['$http', '$q', '$log', function ($http, $q, $log) {
    console.log("running factory");
    return {
        getLocationData: function (inventoryId) {
            var def = $q.defer();

            $http.get('/butthead', {
                params: {
                    inventoryId: inventoryId
                }
            }).then(function (response) {
                def.resolve({
                    success: true,
                    locations: data.locations
                });
            }, function (response) {
                $log.error('failed to fetch data', response);
                def.resolve({
                    success: false,
                    redirect: response.redirect
                });
            });

            return def.promise;
        }
    }
}]);
})();  
<script src="~/theme/modern/assets/global/plugins/angularjs/angular.min.js"></script>
<script src="~/App/Inventory/Product/ProductApp.js"></script>
<script src="~/App/Inventory/Product/LocationsFactory.js"></script>
<script src="~/App/Inventory/Product/LocationsController.js"></script>
工厂

(function () {
'use strict';
console.log("running app");
var app = angular.module('InventoryProductApp', []).config(function ($logProvider) {
    $logProvider.debugEnabled(true);
});
angular.element(document).ready(function () {
    var app = document.getElementById('InventoryProductApp');
    angular.bootstrap(angular.element(app), ['InventoryProductApp']);
});
})();  
(function () {
'use strict';
angular.module('InventoryProductApp').controller("LocationsController", ['$scope', '$log', 'LocationsFactory'
, function ($scope, $http, $log, LocationsFactory) {
    console.log("running controller");
    $scope.locations = null;
    $scope.loading = false;

    //private methods -------------------------------------------------------------------------------------------------------------------------------------------------------------

    var fetchLocationData = function (inventoryId) {
        $scope.loading = true;
        console.log(LocationsFactory);
        var promise = LocationsFactory.getLocationData(inventoryId);

        promise.then(function (data) {
            $scope.loading = false;

            if (data.success) {
                $scope.locations = data.locations;
            }
            else
            {
                $log.error('There was an error getting location data');
            }

        }, function (data) {
            $scope.loading = false;
            $log.error('There was an error getting location data');
        });
    }

    //end private methods ---------------------------------------------------------------------------------------------------------------------------------------------------------


    //public methods --------------------------------------------------------------------------------------------------------------------------------------------------------------

    var init = function (inventoryId) {
        console.log('inventoryId', inventoryId);
        fetchLocationData(inventoryId);
    }
    //end public methods ----------------------------------------------------------------------------------------------------------------------------------------------------------

    init(inventoryId); // inventoryId is found in the partialView _inventoryLocationDistribution
}]);
})();  
(function () {
'use strict';

angular.module('InventoryProductApp').factory('LocationsFactory', ['$http', '$q', '$log', function ($http, $q, $log) {
    console.log("running factory");
    return {
        getLocationData: function (inventoryId) {
            var def = $q.defer();

            $http.get('/butthead', {
                params: {
                    inventoryId: inventoryId
                }
            }).then(function (response) {
                def.resolve({
                    success: true,
                    locations: data.locations
                });
            }, function (response) {
                $log.error('failed to fetch data', response);
                def.resolve({
                    success: false,
                    redirect: response.redirect
                });
            });

            return def.promise;
        }
    }
}]);
})();  
<script src="~/theme/modern/assets/global/plugins/angularjs/angular.min.js"></script>
<script src="~/App/Inventory/Product/ProductApp.js"></script>
<script src="~/App/Inventory/Product/LocationsFactory.js"></script>
<script src="~/App/Inventory/Product/LocationsController.js"></script>
脚本加载顺序

(function () {
'use strict';
console.log("running app");
var app = angular.module('InventoryProductApp', []).config(function ($logProvider) {
    $logProvider.debugEnabled(true);
});
angular.element(document).ready(function () {
    var app = document.getElementById('InventoryProductApp');
    angular.bootstrap(angular.element(app), ['InventoryProductApp']);
});
})();  
(function () {
'use strict';
angular.module('InventoryProductApp').controller("LocationsController", ['$scope', '$log', 'LocationsFactory'
, function ($scope, $http, $log, LocationsFactory) {
    console.log("running controller");
    $scope.locations = null;
    $scope.loading = false;

    //private methods -------------------------------------------------------------------------------------------------------------------------------------------------------------

    var fetchLocationData = function (inventoryId) {
        $scope.loading = true;
        console.log(LocationsFactory);
        var promise = LocationsFactory.getLocationData(inventoryId);

        promise.then(function (data) {
            $scope.loading = false;

            if (data.success) {
                $scope.locations = data.locations;
            }
            else
            {
                $log.error('There was an error getting location data');
            }

        }, function (data) {
            $scope.loading = false;
            $log.error('There was an error getting location data');
        });
    }

    //end private methods ---------------------------------------------------------------------------------------------------------------------------------------------------------


    //public methods --------------------------------------------------------------------------------------------------------------------------------------------------------------

    var init = function (inventoryId) {
        console.log('inventoryId', inventoryId);
        fetchLocationData(inventoryId);
    }
    //end public methods ----------------------------------------------------------------------------------------------------------------------------------------------------------

    init(inventoryId); // inventoryId is found in the partialView _inventoryLocationDistribution
}]);
})();  
(function () {
'use strict';

angular.module('InventoryProductApp').factory('LocationsFactory', ['$http', '$q', '$log', function ($http, $q, $log) {
    console.log("running factory");
    return {
        getLocationData: function (inventoryId) {
            var def = $q.defer();

            $http.get('/butthead', {
                params: {
                    inventoryId: inventoryId
                }
            }).then(function (response) {
                def.resolve({
                    success: true,
                    locations: data.locations
                });
            }, function (response) {
                $log.error('failed to fetch data', response);
                def.resolve({
                    success: false,
                    redirect: response.redirect
                });
            });

            return def.promise;
        }
    }
}]);
})();  
<script src="~/theme/modern/assets/global/plugins/angularjs/angular.min.js"></script>
<script src="~/App/Inventory/Product/ProductApp.js"></script>
<script src="~/App/Inventory/Product/LocationsFactory.js"></script>
<script src="~/App/Inventory/Product/LocationsController.js"></script>

在控制器中:

angular.module('InventoryProductApp').controller("LocationsController",    
    ['$scope', '$log', 'LocationsFactory', function ($scope, $http, $log, LocationsFactory) {

依赖项注入中缺少
'$http'
,这意味着
LocationsFactory
参数根本没有填充。

将错误作为文本而不是图像发布。请使用ng注释,并使用这种难看、冗长、易出错的数组表示法来完成。