Angular无法识别我的控制器

时间:2015-12-02 21:43:13

标签: javascript angularjs ionic

我无法理解为什么但是角度给了我以下错误并在线阅读更多关于它我理解其他人在命名控制器或模块时有某种错字时会有同样的错误。所以我已经检查了配置,服务和HTML代码100次,我相信它们看起来都很好;

我无法理解我错过了什么?或者寻找什么!

非常感谢提前。

错误:

纳克:AREQ;坏论据

Argument' LoyaltyController'不是

描述

AngularJS经常断言使用辅助函数会出现某些值并且会失效。如果断言失败,则抛出此错误。要解决此问题,请确保断言所期望的值已定义且真实。

我的忠诚度控制器

(function () {
    'use strict';

    angular
        .module('app')
        .controller('LoyaltyController', LoyaltyController);

    LoyaltyController.$inject = ['navigationService','loyaltyService', '$scope', 'ionicMaterialInk', 'ionicMaterialMotion'];
    function LoyaltyController(navigationService, loyaltyService, dealService, $scope, ionicMaterialInk, ionicMaterialMotion) {
        // Set Header
        $scope.$parent.$parent.$parent.showHeader();
        $scope.$parent.$parent.$parent.clearFabs();
        $scope.$parent.$parent.$parent.setExpanded(false);
        $scope.$parent.$parent.$parent.setHeaderFab(false);

        var vm = this;
        vm.loyalty = [];

        loyaltyService.getUserLoyalty()
            .success(function (data, status, headers, config) {
                vm.loyalty = data;
        });

        vm.menuItems = [];

        navigationService.getAllNavigations()
            .success(function (data, status, headers, config) {
                vm.menuItems = data;

                $timeout(function () {
                    // Set Motion
                    ionicMaterialMotion.fadeSlideInRight();

                    // Set Ink
                    ionicMaterialInk.displayEffect();
                }, 100);
            });

        // Delay expansion

        $timeout(function () {

            ionicMaterialMotion.slideUp({
                selector: '.slide-up'
            });
        }, 300);
    };
})();

2 个答案:

答案 0 :(得分:0)

你忘了注入dealService但你在控制器方法中提到过它。

LoyaltyController.$inject = ['navigationService','loyaltyService', '$scope', 'ionicMaterialInk', 'ionicMaterialMotion'];
    function LoyaltyController(navigationService, loyaltyService, dealService, $scope, ionicMaterialInk, ionicMaterialMotion) {
                                                                      ^    
                                                                      |
                                                                     here

您必须根据您的控制器方法参数进行注入,或者您必须根据您的注入器声明控制器方法参数您选择的两种语言必须相等且按顺序。

LoyaltyController.$inject = ['navigationService','loyaltyService','dealService','$scope', 'ionicMaterialInk', 'ionicMaterialMotion'];

答案 1 :(得分:0)

问题是我忘了将控制器和服务附加到我的主html。

同样Anik指出我在调用dealService时没有在我的控制器中注入它。另一个问题是超时功能,我不得不在文件中添加它以使其工作。