2016-05-29 66 views
0

我正在编程一个基于Angular的Web应用程序。 当我用鲍尔运行它时,它的一切正常,除了一部分。 我正在使用与其他模块完全一样的语法,但无法弄清楚为什么使用这个模块它没有找到控制器功能。Angular - 函数undefined

providers.js

(function() { 
    'use strict'; 

    angular 
     .module('app.hostels.providers', [ 

     ]); 
})(); 

providers.config.js

(function() { 
    'use strict'; 

    angular 
     .module('app.hostels.providers') 
     .config(moduleConfig); 

    /* @ngInject */ 
    function moduleConfig($translatePartialLoaderProvider, $stateProvider, triMenuProvider, $httpProvider) { 
     $translatePartialLoaderProvider.addPart('app/hostels/providers'); 

     $stateProvider 
     .state('triangular.admin-default.providers-new', { 
      url: '/provider/', 
      templateUrl: 'app/hostels/providers/new/new.tmpl.html', 
      controller: 'NewProviderController', 
      controllerAs: 'vm', 
      data: { 
       layout: { 
        contentClass: 'full-image-background mb-bg-fb-16 background-overlay-static', 
        innerContentClass: 'overlay-gradient-20' 
       } 
      } 
     }) 
     .state('triangular.admin-default.providers-newbed', { 
      url: '/bed', 
      templateUrl: 'app/hostels/providers/newbed/newbed.tmpl.html', 
      controller: 'NewBedController', 
      controllerAs: 'vm' 
     }) 
     .state('triangular.admin-default.providers-list', { 
      url: '/providers', 
      templateUrl: 'app/hostels/providers/listprov/list.tmpl.html', 
      controller: 'ListprovController', 
      controllerAs: 'vm' 
     }) 
     .state('triangular.admin-default.providers-edit', { 
      url: '/provider/:index', 
      templateUrl: 'app/hostels/providers/edit/edit.tmpl.html', 
      controller: 'EditController', 
      controllerAs: 'vm' 
     }); 

     triMenuProvider.addMenu({ 
      name: 'MENU.PROVIDERS.PROVIDERS', 
      icon: 'zmdi zmdi-hotel', 
      type: 'dropdown', 
      priority: 4.1, 
      children: [{ 
       name: 'MENU.PROVIDERS.NEW', 
       state: 'triangular.admin-default.providers-new', 
       type: 'link' 
      },{ 
       name: 'MENU.PROVIDERS.NEWBED', 
       state: 'triangular.admin-default.providers-newbed', 
       type: 'link' 
      },{ 
       name: 'MENU.PROVIDERS.LIST', 
       state: 'triangular.admin-default.providers-list', 
       type: 'link' 
      }] 
     }); 
    } 

})(); 

listprov/listprov.controller.js

(function() { 
    'use strict'; 

    angular 
     .module('app.hostels.providers') 
     .controller('ListprovController', ListprovController); 

     function ListprovController ($scope, $http, $location, APP, ApiResourceProvider, $log) { 
      var vm = this; 
      $log.log('Providers list'); 
     } 

    } 
); 

当我运行应用程序,我得到一个控制台错误sayin'ListprovController不是一个函数,并得到了未定义。

任何想法?

提前致谢!

+1

如何为Node.js的与此有关?您在这里展示的所有内容都是客户端代码。 – TMG

+0

你不是在最后一个文件中调用你的函数表达式(你缺少'()') – MinusFour

+0

试过了,但仍然返回相同的错误 – Pablo

回答

0

尝试

var ListprovController = function() { }; 

代替

function ListprovController() { } 
+0

尝试过,仍然是一样的......无论如何,我的注意力是另一个模块语法与我在本模块中使用的语法完全相同。如果我替换某个函数的控制器名称,它将起作用,但它不会与控制器名称一起使用。任何其他想法? – Pablo

+0

我的意思是,如果我在状态声明中替换控制器名称 – Pablo

+0

如果确实调用了iife,也许您没有在您的html代码中包含控制器JS文件。 你不用分号关闭你的函数。不确定严格模式会导致什么结果。 – Noppey