2014-10-21 30 views
0

我無法理解Angular JS的錯誤。我試圖建立一個工廠,但它不斷給我在Firefox中的以下錯誤控制檯。Angular Js錯誤不可理解

錯誤:[NG:AREQ] http://errors.angularjs.org/1.2.9/ng/areq?p0=hospitalController&p1=not%20a%20function%2C%20got%20undefined

我的代碼是

索引

<div class="main ng-scope" ng-view=""> 

局部

<button data-ng-click="ShowStaff()">show</button> 

app.js

var myApp = angular.module('myApp', [ 
    'ngRoute', 
    'artistControllers' 
]); 

myApp.config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
    when('/list', { 
    templateUrl: 'partials/list.html', 
    controller: 'ListController' 
    }). 
    when('/hospital', { 
    templateUrl: 'partials/hospital.html', 
    controller: 'hospitalController' 

    }). 
    when('/docter', { 
    templateUrl: 'partials/docters.html', 
    controller: 'docterController' 
    }). 
    when('/details/:itemId', { 
    templateUrl: 'partials/details.html', 
    controller: 'DetailsController' 
    }). 
    otherwise({ 
    redirectTo: '/hospital' 
    }); 
}]); 

controller.js

var artistControllers = angular.module('artistControllers', ['ngAnimate']); 
artistControllers.controller('ListController', ['$scope', '$http', function($scope, $http) { 
    $http.get('js/data.json').success(function(data) { 
    $scope.artists = data; 
    $scope.artistOrder = 'name'; 
    }); 

// Starting Factory for Doctor and hospital relationship 
artistControllers.factory('StaffFactory','$http',function(){ 
    var factory = {}; 
    $http.get('js/hospital.json').success(function(data) { 
    factory.hospitals = data; 
    //$scope.hospitalOrder = 'name'; 
    }); 

    $http.get('js/docters.json').success(function(data) { 
    factory.doctors = data; 
    //$scope.hospitalOrder = 'name'; 
    }); 

    factory.getDocs = function(){ 
     return factory.doctors; 
     }; 

     factory.getHos= function(){ 
     return factory.hospitals; 
     }; 
    factory.getStaff = function(){ 
     var result=[]; 
     var endres=[]; 
     angular.forEach(factory.hospitals, function(hospital){ 
      result=[]; 
      angular.forEach(factory.doctors,function(doc){ 
       if(doc.id==hospital.id) 
       { 
       result.push(doc); 
       } 
      }); 
     endres.push([hospital,result]);   
     }); 
    return endres; 
     } 

    return factory; 
    });  
artistControllers.SimpleController=function($scope,StaffFactory){ 

    $scope.customers=[]; 
    $scope.hospitals=[ ]; 
    $scope.doctors=[]; 
    $scope.staff=[]; 
    init(); 
    function init() 
    { 
    $scope.doctors=StaffFactory.getDocs(); 
    $scope.hospitals=StaffFactory.getHos(); 
    } 

    $scope.ShowStaff = function() 
    { 
    $scope.staff=StaffFactory.getStaff(); 
    } 
    }; 


// Ending Factory for Doctor and hospital relationship 
}]); 

回答

3

除了由@dave解釋的實際錯誤之外,如果您希望eror消息更加明確而不必遵循鏈接,則應該使用angular.js而不是angular.min.js(最小化的)你的開發環境。

+1

是的,我已經添加angular.js 現在的錯誤是相當可以理解的。 – 2014-10-21 23:01:13

2

如果按照錯誤的鏈接,你會看到

Argument 'hospitalController' is not a function, got undefined

聽起來好像你在你的HTML有地方:

ng-controller="hospitalController" 

但是你還沒有創建一個具有該名稱的控制器。

+1

我也認爲有可能在您的路線中,控制器尚未註冊到視圖中。 – GeekOnGadgets 2014-10-21 22:50:05

+0

感謝您的回覆。 它不是從html實際上它從我的app.js我定義我的路線。 – 2014-10-21 23:00:02