1

这已被问过,但它没有回答我的问题。我对角度相当陌生,现在我只是把事情放在一起。我试图让我的工厂在我的控制器内工作。不过,我不断收到以下错误在我的控制台:参数'indexController'是不是一个函数,得到undefined

Argument 'indexController' is not a function, got undefined 

我打破了在不同的目录服务和控制器和我已经加入了服务和控制器<script>到index.html文件。

我使用IntelliJ并使用其插件创建样板。

<body > 
    <ul class="menu"> 
    <li><a href="#/view1">view1</a></li> 
    <li><a href="#/view2">view2</a></li> 
    </ul> 


    <!--[if lt IE 7]> 
     <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> 
    <![endif]--> 

    <div> 

      <p>Name: <input type="text" ng-model="name"> </p> 
      <h1>Hello {{name}}</h1> //this works just fine 

    </div> 

    <div ng-controller="indexController"> //doesn't appear 
     <ul> 
      <li ng-repeat="x in nameArray"> 
       {{x.name + ' is : '+x.age+' years old'}} 
      </li> 
     </ul> 

    </div> 

控制器:

angular.module('myApp',[]) 
    .controller('indexController', ['$scope', 'Contact', function($scope, Contact){ 

     var names = [ 
      {name:'Drew' , age: 30}, 
      {name:'Meike', age: 32}, 
      {name:'Garry', age:64} 
     ]; 

     Contact.add(names); 

    $scope.nameArray = Contact.get(); 



}]); 

FactoryService:

angular.module('myApp',[]) 
    .factory('Contact', function ContactFactory(){ 
     var personNames = []; 
     return{ 

      add: function(name) { 
       personNames.add(name); 
      }, 

      get: function(){ 
       return personNames; 
      } 

     } 

    }); 

回答

2

你不应该内部FactoryService再次重现角模块myApp,当你再次创造myApp模块就冲出旧的注册组件到那个模块。所以当你注册FactoryService它将删除旧的寄存器组件,在这里它删除了indexController控制器。当ng-controller指令获取评估它搜索indexController控制器模块内部并抛出一个错误

应该

angular.module('myApp') 
    .factory('Contact', function ContactFactory(){ 

,而不是

angular.module('myApp',[]) 
    .factory('Contact', function ContactFactory(){ 
相关问题