Angular工厂中的功能未定义

时间:2016-07-18 10:39:33

标签: angularjs

我的项目中包含以下preloader.js工厂文件。

    angular.module('movieSeat')
        .factory('preloader', function( $q, $rootScope ) {

在我的控制器中,我按如下方式注入工厂:

    angular.module('movieSeat')
        .controller('moviesearchCtrl', ['$scope', 'moviesearchFactory', function ($scope, moviesearchFactory, preloader) {

当我尝试在预加载控制器中使用preloadImages函数时:

    $scope.imageLocations = [
        "https://image.tmdb.org/t/p/w300_and_h450_bestv2//nlqFgG7jfBITl8fJHzL72jXwYLt.jpg",
        "https://image.tmdb.org/t/p/w300_and_h450_bestv2//ghL4ub6vwbYShlqCFHpoIRwx2sm.jpg",
        "https://image.tmdb.org/t/p/w300_and_h450_bestv2//weUSwMdQIa3NaXVzwUoIIcAi85d.jpg",
    ];

    preloader.preloadImages($scope.imageLocations)

我收到以下错误:

  

无法读取未定义

的属性'preloadImages'

如果我注释掉preloader.preloadImages($scope.imageLocations)代码,则错误消失了。所以对我而言,在我的控制器中注入预加载器工厂似乎工作正常,但我无法弄清楚为什么我不能在preloadImages工厂调用函数preload

2 个答案:

答案 0 :(得分:2)

依赖注入列表中存在拼写错误。您忘记在依赖项字符串列表中添加preloader

 .controller('moviesearchCtrl', ['$scope', 'moviesearchFactory', 'preloader' /*here*/, function ($scope, moviesearchFactory, preloader) {

答案 1 :(得分:1)

您需要参考您的工厂/服务' preloader'在你的控制器调用中如下:

angular.module('movieSeat')
        .controller('moviesearchCtrl', ['$scope', 'moviesearchFactory', 'preloader', function ($scope, moviesearchFactory, preloader) {

})