2014-10-21 53 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