2016-05-29 80 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